serphouse/serphouse-php

使用Serphouse.com API客户端自动搜索搜索引擎(Google、Bing、Yahoo)的结果(serp api),并以结构化JSON格式检索。

v1.0.1 2024-05-10 09:33 UTC

This package is auto-updated.

Last update: 2024-09-10 10:36:50 UTC


README

Packagist License Packagist Downloads GitHub Actions Workflow Status GitHub Actions Workflow Status GitHub Actions Workflow Status

SERPHouse API是您构建强大SEO软件之旅的起点。借助SERPHouse,您可以得到构建高效应用所需的所有数据,同时节省您的时间和预算。

本综合文档旨在为您提供与API交互以及充分发挥其潜力的所有所需的技术信息和产品信息。无论是将SERPHouse SERP API服务集成到您的应用程序中的软件开发人员,还是探索可能性的好奇用户,此API文档都将作为您的首选资源。

适用于SEO专业人士和数据科学家的海量SERP API。我们构建了可靠、准确且成本效益的解决方案,我们负责解决验证码、管理代理,以确保您获得可靠的结构化JSON数据。

此API支持Serphouse的标准REST API,接受/返回JSON请求。以下是API参考

入门

使用Serphouse API的PHP包装器很简单。按照以下步骤将其集成到您的项目中

文档

关于Serphouse API及其使用的文档可在https://docs.serphouse.com/找到

先决条件

  • PHP >= 7.2

安装

您可以通过Composer在项目目录中运行以下命令来安装Serphouse PHP包

composer require serphouse/serphouse-php

使用

您需要在脚本中加载依赖项。

<?php
require __DIR__ . '/vendor/autoload.php';
?>

安装包后,您可以在代码中设置Serphouse客户端,如下所示

<?php

use Serphouse\SERPHouseClient;

$serphouse = new SERPHouseClient('YOUR_API_KEY');

将'YOUR_API_KEY'替换为您的实际Serphouse API密钥。

获取API密钥

您可以通过在https://app.serphouse.com/register注册来获取API密钥。此密钥将用于访问API。

示例

  1. SERP API

  2. 域名列表

  3. 语言列表

  4. 位置列表

  5. 账户信息

  6. 趋势API

SERP API

1. SERP实时

$serphouse->serpApi->live([
    'data' => [
        'q' => 'apple',
        'domain' => 'google.com',
        'lang' => 'en',
        'device' => 'desktop',
        'serp_type' => 'web',
        'loc' => 'Alba,Texas,United States',
        'loc_id' => '1026201',
        'verbatim' => '0',
        'gfilter' => '0',
        'page' => '1',
        'num_result' => '10',
    ],
]);

如果您需要通过responseType HTML或Json获取响应,则可以使用以下示例

$serphouse->serpApi->live('DATA_ARRAY','responseType'); // default responseType is Json

2. SERP计划

$serphouse->serpApi->schedule([
    "data" => [
        [
            "q" => "Coffee",
            "domain" => "google.com",
            "lang" => "en",
            "device" => "desktop",
            "serp_type" => "web",
            "loc" => "Alba,Texas,United States",
            "verbatim" => 0,
            "postback_url" => "Webhook_url",
            "pingback_url" => "Webhook_url",
            "page" => 1,
            "num_result" => 10
        ]
    ]
]);

3. SERP检查

$serphouse->serpApi->check('SERP_ID');

4. SERP获取

$serphouse->serpApi->get('SERP_ID');

如果您需要通过responseType HTML或Json获取响应,则可以使用以下示例

$serphouse->serpApi->get('SERP_ID','responseType'); // default responseType is Json

域名列表

1. 获取域名列表

$serphouse->domains->list();

语言列表

1. 获取语言列表

$serphouse->languages->list();

如果您需要通过Google、Bing和Yahoo获取语言列表,则可以使用以下示例

$serphouse->languages->list(['type'=> 'bing']); // default type is google

位置列表

1. 获取位置列表

$serphouse->location->search(['q'=> 'texas']);

如果您需要通过Google、Bing和Yahoo获取位置列表,则可以使用以下示例

$serphouse->languages->search(['q'=> 'texas','type'=> 'bing']); // default type is google

账户信息

1. 获取账户信息

$serphouse->account->fetch();

趋势API

1. 趋势搜索

$serphouse->trends->search([
    'time_zone_offset' => '-330',
    'keywords' => 'google,youtube',
    'time' => 'now 1-d',
    'property' => 'youtube',
    'category' => '0',
    'geo' => 'us',
    'language_code' => 'en'
]);

2. 趋势计划

$serphouse->trends->schedule([
    "data" => [
        [
            "time_zone_offset" => -330,
            "keywords" => "google",
            "time" => "now 1-d",
            "property" => "youtube",
            "category" => 0,
            "geo" => "us",
            "language_code" => "en",
            "postback_url" => "Webhook_url",
            "pingback_url" => "Webhook_url"
        ]
    ]
]);

3. 获取时区列表

$serphouse->trends->timeZoneList();

4. 获取类别列表

$serphouse->trends->categoryList();

5. 获取国家和州列表

$serphouse->trends->countryStateList();

6. 获取语言列表

$serphouse->trends->languageList();

7. 趋势检查

$serphouse->trends->check('TRENDS_ID');

8. 趋势获取

$serphouse->trends->get('TRENDS_ID');

响应

成功响应示例。

SERPHouse\Services\Handlers\Responses Object
(
    [statusCode:SERPHouse\Services\Handlers\Responses:private] => 200
    [response:SERPHouse\Services\Handlers\Responses:private] => {"status":"success","msg":"Completed","search_metadata":{"id":128078258,"status":"success","created_at":"2024-05-04T06:20:10.000000Z","processed_at":"2024-05-04 06:20:10"},"search_parameters":{"langauge_code":"en-US","geo":"US","keywords":"google,youtube","time_zone_offset":"-330","time":"now 1-d","category":0,"property":"youtube"},"results":{"TIMESERIES":[{"time":"1714716960","formattedTime":"May 3, 2024 at 11:46 AM","formattedAxisTime":"May 3 at 11:46 AM","value":[19,72],"hasData":[true,true],"formattedValue":["19","72"]}],"GEO_MAP":{"google":{"default":{"geoMapData":[{"geoCode":"US-VT","geoName":"Vermont","value":[100],"formattedValue":["100"],"maxValueIndex":0,"hasData":[true]}]}},"youtube":{"default":{"geoMapData":[{"geoCode":"US-NH","geoName":"New Hampshire","value":[100],"formattedValue":["100"],"maxValueIndex":0,"hasData":[true]}]}}},"RELATED_QUERIES":{"google":{"default":{"rankedList":[{"rankedKeyword":[{"query":"google link","value":100,"formattedValue":"100","hasData":true,"link":"/trends/explore?q=google+link&date=now+1-d&geo=US"}]},{"rankedKeyword":[{"query":"the man who killed google search","value":1650,"formattedValue":"+1,650%","link":"/trends/explore?q=the+man+who+killed+google+search&date=now+1-d&geo=US"}]}]}},"youtube":{"default":{"rankedList":[{"rankedKeyword":[{"query":"on youtube","value":100,"formattedValue":"100","hasData":true,"link":"/trends/explore?q=on+youtube&date=now+1-d&geo=US"}]},{"rankedKeyword":[{"query":"jayson tatum youtube channel","value":5300,"formattedValue":"Breakout","link":"/trends/explore?q=jayson+tatum+youtube+channel&date=now+1-d&geo=US"}]}]}}}}}
    [errorMessage:SERPHouse\Services\Handlers\Responses:private] => 
)

验证错误响应示例。

SERPHouse\Services\Handlers\Responses Object
(
    [statusCode:SERPHouse\Services\Handlers\Responses:private] => 400
    [response:SERPHouse\Services\Handlers\Responses:private] => {"status":"error","msg":"validation_error","error":{"time_zone_offset":["The time zone offset field is required."]}}
    [errorMessage:SERPHouse\Services\Handlers\Responses:private] => Client error: `POST https://api.serphouse.com/trends/search` resulted in a `400 Bad Request` response:
{"status":"error","msg":"validation_error","error":{"time_zone_offset":["The time zone offset field is required."]}}
)

您需要管理响应。

  • 使用getStatusCode()函数获取响应状态码

    $response->getStatusCode()
  • 使用getResponse()函数获取响应,您将获得JSON字符串

    $response->getResponse()
  • 使用 getErrorMessage() 函数获取错误信息,您将得到 JSON 字符串

    $response->getErrorMessage()

异常类

SERPHouseNotFoundException

当请求的调用未找到时,会抛出此异常。

SERPHousePaymentRequiredException

当需要支付才能访问请求的调用时,会抛出此异常。

SERPHouseRateLimitExceededException

当 SERP House API 中 API 请求的速率限制超出时,会抛出此异常。有关速率限制的更多信息,请查看此 链接

SERPHouseServerErrorException

当发生内部服务器错误时,会抛出此异常。

SERPHouseUnauthorizedException

当请求未授权访问请求的调用或 API 密钥无效时,会抛出此异常。