• Information
  • Call limits
  • Google versions
  • List of versions
  • Google SERPs
  • Creating queries
  • Query IDs
  • Recovering SERPs
  • Callback URL
  • SERPs processing status
  • Billing
  • Remaining credit
  • Payment methods

Information

Limit the number of API calls
GET : 100 appels par minute
POST : 100 appels par minute

Google versions

Get the location and language parameters required to retrieve Google SERPs.
get
https://api.semscraper.com/v1/serp/google/location
Authorizations : Bearer {api_key}
  • Request
  • Successful response
Status: 200 OK
{
    "status": "success",
    "request_ms": 17,
    "count": 372,
    "data":
        {
            "location": "en",
            "language": "en",
            "host": "google.com",
            "name": "World Wide Web"
        },
        {
            "location": "fr",
            "language": "fr",
            "host": "google.fr",
            "name": "France"
        }
}

Google SERPs

Creating Google SERPs queries
The data must be sent in a JSON array. Each element must contain the following fields.
Limit
The JSON array can contain 100 elements, so you can create 100 SERPs scrapes in a single call.
post
https://api.semscraper.com/v1/serp/google
Authorizations : Bearer {api_key}
Parameters
search_engine
Required
string
Choice of search engine :
Google Search (value: google_search)
keyword
Required
string
Keywords to search on the search engine
device
Required
string
Choice of substrate :
Computer (value: desktop)
Mobile (value: mobile)
depth
Required
integer
Page depth, we retrieve Google SERPs with pagination. This parameter must be between 1 (about 10 results) and 10 (about 100 results).
location
Required
string
Search engine location code
language
Required
string
Search engine language
geolocation
string
Allows you to geotag a Google SERP. For example, you can indicate the city, department or country, separated by a comma.
priority
integer
Allows you to prioritize your requests, which are processed in descending order of priority. Value between 1 and 10.
callback_url
string
Allows you to specify a URL to which we will send you the results of the keyword once it has been processed.
  • Request
  • Successful response
  • Error response
Status: 200 OK
{
    "status": "success",
    "request_ms": 40,
    "count": 1,
    "currency": "EUR",
    "total_cost": 2.0e-5,
    "data":
        {
            "id": "SERP_ID",
            "status": "pending",
            "keyword": "example keyword",
            "device": "mobile",
            "location": "fr",
            "language": "fr",
            "depth": 1,
            "geolocation": false,
            "priority": 1,
            "callback_url": null,
            "cost": 2.0e-51,
            "_links": {
                "json": {
                    "href": "/serp/google?ids=SERP_ID&output=json",
                    "method": "GET",
                    "type": "application/json"
                },
                "html": {
                    "href": "/serp/google?ids=SERP_ID&output=html",
                    "method": "GET",
                    "type": "application/json"
                }
            }
        }
    

}
Status: 400 Bad Request
{
    "error": "Bad Request",
    "message": "DESCRIPTION_OF_ERROR",
    "code": 400
}
List of IDs for completed SERPs that you have not yet retrieved.
This method allows you to obtain the IDs of all SERPs already processed but never retrieved. You can then call up the Google SERP retrieval method using these IDs.
get
https://api.semscraper.com/v1/serp/google
Authorizations : Bearer {api_key}
  • Request
  • Successful response
Status: 200 OK
{
    "status": "success",
    "request_ms": 40,
    "count": 2,
    "data":
        {
            "id": "SERP_ID",
            "status": "done",
            "keyword": "example keyword",
            "device": "desktop",
            "location": "fr",
            "language": "fr",
            "depth": 5,
            "geolocation": false,
            "callback_url": "",
            "cost": "0.00010",
            "_links": {
                "json": {
                    "href": "/serp/google?ids=SERP_ID&output=json",
                    "method": "GET",
                    "type": "application/json"
                },
                "html": {
                    "href": "/serp/google?ids=SERP_ID&output=html",
                    "method": "GET",
                    "type": "application/json"
                }
            }
        },
        {
            "id": "SERP_ID",
            "status": "done",
            "keyword": "example keyword",
            "device": "mobile",
            "location": "fr",
            "language": "fr",
            "depth": 5,
            "geolocation": false,
            "callback_url": "",
            "cost": "0.00010",
            "_links": {
                "json": {
                    "href": "/serp/google?ids=SERP_ID&output=json",
                    "method": "GET",
                    "type": "application/json"
                },
                "html": {
                    "href": "/serp/google?ids=SERP_ID&output=html",
                    "method": "GET",
                    "type": "application/json"
                }
            }
        }
    

}
Recover Google SERPs via their IDs
Retrieve multiple SERPs in one call (in JSON or HTML format) by providing multiple IDs separated by a comma.
Limit
You can specify up to 100 IDs, allowing you to retrieve 100 SERPs in a single call.
get
https://api.semscraper.com/v1/serp/google?ids=id1,id2&output=json
Authorizations : Bearer {api_key}
Parameters
ids
Required
string
Comma-separated list of IDs.
output
Required
string
Choice of output format :
JSON (value: json)
HTML (value: html)
  • Request
  • Successful response
  • Error response
Status: 200 OK
{
    "status": "success",
    "request_ms": 41,
    "count": 1,
    "data":
        {
            "id": "SERP_ID",
            "status": "done",
            "keyword": "example keyword",
            "device": "desktop",
            "location": "fr",
            "language": "fr",
            "depth": 1,
            "geolocation": false,
            "priority": 1,
            "callback_url": "",
            "cost": "0.00002",
            "created_at": "2025-09-10T12:32:56Z",
            "scraped_at": "2025-09-10T12:33:02Z",
            "duration_ms": 5403,
            "results":
                {
                    "type": "people_also_ask",
                    "items":
                        {
                            "rank_type": 1,
                            "rank_serp": 4,
                            "page": 1,
                            "pixel": 806,
                            "domain": "guides.lib.uh.edu",
                            "url": "https://guides.lib.uh.edu/c.php?g\\x3d1249281",
                            "title": "What is a keyword example?",
                            "description": ""
                        },
                        {
                            "rank_type": 2,
                            "rank_serp": 5,
                            "page": 1,
                            "pixel": 858,
                            "domain": "toolsqa.com",
                            "url": "https://toolsqa.com/cucumber/data-driven-testing-using-examples-keyword/",
                            "title": "What is the example keyword used for?",
                            "description": ""
                        },
                        {
                            "rank_type": 3,
                            "rank_serp": 6,
                            "page": 1,
                            "pixel": 911,
                            "domain": "www.editage.com",
                            "url": "https://www.editage.com/insights/how-to-create-keywords-for-a-research-paper",
                            "title": "How do you write keywords examples?",
                            "description": ""
                        },
                        {
                            "rank_type": 4,
                            "rank_serp": 7,
                            "page": 1,
                            "pixel": 964,
                            "domain": "libguides.lvc.edu",
                            "url": "https://libguides.lvc.edu/c.php?g\\x3d1152118\\x26ampp\\x3d8409030",
                            "title": "What is an example of a keyword search?",
                            "description": ""
                        }
                    

                },
                {
                    "type": "videos",
                    "items":
                        {
                            "rank_type": 1,
                            "rank_serp": 1,
                            "page": 1,
                            "pixel": 223,
                            "domain": "www.youtube.com",
                            "url": "https://www.youtube.com/watch?v=H-B5oFJjL8I",
                            "title": "What are Keywords and How to Choose Them? 1.1. SEO ...",
                            "description": ""
                        },
                        {
                            "rank_type": 2,
                            "rank_serp": 2,
                            "page": 1,
                            "pixel": 374,
                            "domain": "www.youtube.com",
                            "url": "https://www.youtube.com/watch?v=TTlEVVB75wo&pp=2AEAkAIB",
                            "title": "What Are Keywords? Everything You Need To Know (and more)",
                            "description": ""
                        },
                        {
                            "rank_type": 3,
                            "rank_serp": 3,
                            "page": 1,
                            "pixel": 526,
                            "domain": "www.youtube.com",
                            "url": "https://www.youtube.com/watch?v=OMJQPqG2Uas",
                            "title": "Keyword Research Tutorial: From Start to Finish",
                            "description": ""
                        }
                    

                },
                {
                    "type": "organic",
                    "items":
                        {
                            "rank_type": 1,
                            "rank_serp": 8,
                            "page": 1,
                            "pixel": 1077,
                            "domain": "www.seoquantum.com",
                            "url": "https://www.seoquantum.com/en/blog/6-types-keywords-organic-seo",
                            "title": "The 6 Types of Keywords in Organic SEO",
                            "description": "2 mars 2024 — I will introduce you to 6 types of keywords that you absolutely need to know. We will start with the most common ones such as long-tail keywords and then move ..."
                        },
                        {
                            "rank_type": 2,
                            "rank_serp": 9,
                            "page": 1,
                            "pixel": 1223,
                            "domain": "storychief.io",
                            "url": "https://storychief.io/blog/seo-keyword-research-examples",
                            "title": "10 Clever SEO Keyword Research Examples",
                            "description": "Let's say you run a food blog. Some potential SEO keywords could be: quick weeknight dinners easy dinner recipes 30 minute meals one pot dinners"
                        },
                        {
                            "rank_type": 3,
                            "rank_serp": 10,
                            "page": 1,
                            "pixel": 1369,
                            "domain": "www.indeed.com",
                            "url": "https://www.indeed.com/career-advice/career-development/types-of-keywords",
                            "title": "19 Types of Keywords",
                            "description": "6 juin 2025 — 19 types of keywords and how to use them for marketing · 1. Market segment keywords · 2. Customer-defining keywords · 3. Product-defining ..."
                        },
                        {
                            "rank_type": 4,
                            "rank_serp": 11,
                            "page": 1,
                            "pixel": 1515,
                            "domain": "www.usg.edu",
                            "url": "https://www.usg.edu/galileo/skills/unit04/primer04_07.phtml",
                            "title": "Keyword Search",
                            "description": "In this case, the phrase alternative fuels and automobiles are the significant keywords."
                        },
                        {
                            "rank_type": 5,
                            "rank_serp": 12,
                            "page": 1,
                            "pixel": 1639,
                            "domain": "guides.lib.uh.edu",
                            "url": "https://guides.lib.uh.edu/c.php?g=1249281",
                            "title": "What are keywords and why are they important? - Guides",
                            "description": "You probably used the title of the film and the word “showtimes” as your keywords to bring up the results you needed. Keywords in academic research are similar."
                        },
                        {
                            "rank_type": 6,
                            "rank_serp": 13,
                            "page": 1,
                            "pixel": 1785,
                            "domain": "www.tactee.fr",
                            "url": "https://www.tactee.fr/seo/strategie-seo/keyword-seo/",
                            "title": "Qu'est ce qu'un keyword SEO ? Définition & conseil",
                            "description": "13 juil. 2024 — Commerciale : l'utilisateur compare des produits ou des services, par exemple « meilleur smartphone 2024 ». Identifier l'intention de recherche ..."
                        },
                        {
                            "rank_type": 7,
                            "rank_serp": 14,
                            "page": 1,
                            "pixel": 1931,
                            "domain": "backlinko.com",
                            "url": "https://backlinko.com/types-of-keywords",
                            "title": "10 Types of Keywords with Examples (+ How to Find Them)",
                            "description": "15 mai 2025 — 10 Types of Keywords with Examples (+ How to Find Them) · 1. Seed Keywords · 2. Informational Keywords · 3. Commercial Keywords · 4."
                        },
                        {
                            "rank_type": 8,
                            "rank_serp": 15,
                            "page": 1,
                            "pixel": 2077,
                            "domain": "learn.microsoft.com",
                            "url": "https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/",
                            "title": "C# Keywords and contextual keywords - C# reference",
                            "description": "17 avr. 2025 — For example, @if is a valid identifier, but if isn't because if is a keyword. The first table in this article lists keywords that are ..."
                        }
                    

                },
                {
                    "type": "images",
                    "items":
                        {
                            "rank_type": 1,
                            "rank_serp": 16,
                            "page": 1,
                            "pixel": 2311,
                            "domain": "searchfacts.com",
                            "url": "https://searchfacts.com/what-are-keywords-in-seo/",
                            "title": "",
                            "description": ""
                        },
                        {
                            "rank_type": 2,
                            "rank_serp": 17,
                            "page": 1,
                            "pixel": 2311,
                            "domain": "backlinko.com",
                            "url": "https://backlinko.com/hub/seo/seo-keywords",
                            "title": "",
                            "description": ""
                        },
                        {
                            "rank_type": 3,
                            "rank_serp": 18,
                            "page": 1,
                            "pixel": 2311,
                            "domain": "ahrefs.com",
                            "url": "https://ahrefs.com/blog/what-are-keywords/",
                            "title": "",
                            "description": ""
                        }
                    

                }
            

        }
    

}
Status: 400 Bad Request
{
    "error": "InvalidParameter",
    "message": "DESCRIPTION_OF_ERROR",
    "code": 400
}
Retrieving SERPs via a callback URL
You can receive the result of a SERP directly on a URL you provide us with when creating a query, simply by retrieving the HMAC key linked to the API key used.
  • Code
  • PHP
  • Python
  • Javascript
  • Ruby
  • Java
  • C#
  • GO
// 1) Read the raw body (JSON)
$raw = file_get_contents('php://input');

// 2) Retrieve the headers
$headers = function_exists('getallheaders') ? getallheaders() : ;
$signature = $headers'X-Signature' ?? '';

// 3) (Optional) Verify the HMAC signature
$sharedSecret = 'HMAC_KEY';
$expected = hash_hmac('sha256', $raw, $sharedSecret);
if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    header('Content-Type: text/plain; charset=utf-8');
    echo 'Invalid signature';
    exit;
}

// 4) Decode the JSON
$data = json_decode($raw, true);

if (json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    header('Content-Type: text/plain; charset=utf-8');
    echo 'Invalid JSON';
    exit;
}

// 5) Process the data
/
$data contains what you sent in the $payload from the client side.
For example : $data'id', $data'results', etc.
/

// 6) Respond in JSON (optional, we log these responses for tracking purposes)
http_response_code(200);
header('Content-Type: application/json; charset=utf-8');
echo json_encode(
    'status' => 'ok',
    'received_at' => gmdate('c'),
    'echo' => $data'id' ?? null
);
Current state of SERPs processing
Shows the number of SERPs according to their status:
Completed and results retrieved by user (status=done, fetched=true)
Completed and results not retrieved by user (status=done, fetched=false)
In process (status=processing)
Waiting (status=pending)
get
https://api.semscraper.com/v1/serp/google/status
Authorizations : Bearer {api_key}
  • Request
  • Successful response
Status: 200 OK
{
    "status": "success",
    "request_ms": 54,
    "count": 4,
    "data":
        {
            "status": "done",
            "fetched": true,
            "count": 5
        },
        {
            "status": "done",
            "fetched": false,
            "count": 1000
        },
        {
            "status": "processing",
            "count": 0
        },
        {
            "status": "pending",
            "count": 0
        }
    

}

Billing

Recovers remaining credit
get
https://api.semscraper.com/v1/billing/credit
Authorizations : Bearer {api_key}
  • Request
  • Successful response
Status: 200 OK
{
    "status": "success",
    "request_ms": 21,
    "count": 1,
    "data":
        {
            "balance": 100.50
        }
    

}
Available payment methods
get
https://api.semscraper.com/v1/billing/payment_methods
Authorizations : Bearer {api_key}
  • Request
  • Successful response
Status: 200 OK
{
    "status": "success",
    "request_ms": 43,
    "count": 3,
    "data":
        {
            "id": 1,
            "name": "Perso",
            "num": "-4242",
            "expiration": "1226",
            "type": "Visa",
            "master": false
        },
        {
            "id": 30,
            "name": "Pro",
            "num": "-4444",
            "expiration": "1227",
            "type": "Mastercard",
            "master": true
        }
    

}