# Google Schedule SERP (Top 100 results)

**Why this endpoint?**

Google recently restricted the `num` parameter to a maximum of 10 results per request. To overcome this limitation, we introduced a new endpoint that can fetch results from multiple pages.

**How it works**

* **`max_pages`** defines how many result pages you want scraped.
* Each page contains up to 10 results.
* Example:
  * `max_pages=5` → up to 50 results (5 pages × 10 results per page)
  * `max_pages=10` → up to 100 results (10 pages × 10 results per page)

**Pricing**

* Credits are reserved upfront for each scheduled task based on the `max_pages` value (1 page = 10 credit).
* If fewer pages are available than requested, the unused reserved credits are automatically refunded after processing completes.

  * **Example :** If  `max_pages=7` but only 2 pages are available, 20 credits will be used and the remaining 50 credits will be refunded once the task is completed.

{% hint style="danger" %}
Requires authentication
{% endhint %}

<mark style="color:green;">`POST`</mark> `https://api.serphouse.com/serp/google_advanced_scheduled`

#### Headers

| Name                                            | Type   | Description              |
| ----------------------------------------------- | ------ | ------------------------ |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer \<YOUR\_API\_KEY> |
| Content-Type<mark style="color:red;">\*</mark>  | String | application/json         |

#### Request Body

| Name                                      | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ----------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| q<mark style="color:red;">\*</mark>       | string  | Search phrase that you want to search                                                                                                                                                                                                                                                                                                                                                                                                                |
| domain<mark style="color:red;">\*</mark>  | string  | <p>Choose google domain.<br></p><p>You can get the list of available search engines by making a separate request to the  <a href="/pages/laBnxuxvKvStquXcYCfl">List of Search Engines</a></p>                                                                                                                                                                                                                                                        |
| lang<mark style="color:red;">\*</mark>    | string  | <p>You can set language for e.g. <code>en</code> for english <code>fr</code> for french.<br>Get the list of available languages by making a separate request to the <a href="/pages/T3o6bzC5LzinD9qIGamk">List of Language</a></p>                                                                                                                                                                                                                   |
| device<mark style="color:red;">\*</mark>  | string  | <p>Device can be<br><code>desktop</code> To extract desktop result<br><code>mobile</code> To extract mobile result</p>                                                                                                                                                                                                                                                                                                                               |
| loc<mark style="color:red;">\*</mark>     | string  | <p>Optional field if you specify <code>loc\_id</code><br><strong>when choose yahoo domain then field is optional</strong><br><strong>You must choose one of the fields: <code>loc\_id</code> or <code>loc</code></strong><br>You can receive the list of available locations of search engines with their loc\_id by making a separate request to the  <a href="/pages/jHif4hVWEf1ax1cYtvip">List of Locations</a></p>                               |
| loc\_id<mark style="color:red;">\*</mark> | integer | <p>Optional field if you specify <code>loc</code><br><strong>you must choose one of the fields: <code>loc\_id</code> or <code>loc</code></strong><br>You can receive the list of available locations of search engines with their loc\_id by making a separate request to the<br><a href="/pages/jHif4hVWEf1ax1cYtvip">List of Locations</a> </p>                                                                                                    |
| verbatim                                  | integer | Set Google Verbatim search, Parameter value can be `0` or `1`                                                                                                                                                                                                                                                                                                                                                                                        |
| gfilter                                   | integer | Parameter defines if the filters for 'Similar Results' and 'Omitted Results' are on or off. It can be set to `1` (default) to enable these filters, or `0` to disable these filters.                                                                                                                                                                                                                                                                 |
| postback\_url                             | url     | <p>return URL for sending task results</p><p>If you specify the <a href="/pages/lJY2QpyhY9Bdmw36MR6d#postback-url">Postback URL</a> there will be no need to use Get SERP Tasks Results for obtaining results. We will send the result of a completed task by a POST request to the URL as soon as the task is completed. You can change your webhook setting from <a href="https://app.serphouse.com/wehook-setting">Webhook Settings Page</a>.</p> |
| pingback\_url                             | url     | <p><a href="/pages/lJY2QpyhY9Bdmw36MR6d#pingback-url">Pingback URL</a> is Notification URL of a completed task,<br><strong>When a task is completed we will notify you by GET request sent to the URL you have specified.</strong> You can change your webhook setting from <a href="https://app.serphouse.com/wehook-setting">Webhook Settings Page</a>.</p>                                                                                        |
| max\_pages                                | integer | Number of pages to return (e.g., `max_pages=4` gives 4 pages, allowed range 1–10, default = 10).                                                                                                                                                                                                                                                                                                                                                     |
| date\_range                               | String  | <p>Sometimes you may want to only find information published during a specific time frame. To limit Google results by date</p><p>Parameter values can be comma seprated date range <code>YYYY-MM-DD,YYYY-MM-DD</code> OR</p><p><code>h</code> Past hour</p><p><code>d</code> Past 24 hours</p><p><code>w</code> Past week</p><p><code>m</code> Past month</p><p><code>y</code> Past year </p>                                                        |

{% tabs %}
{% tab title="200: OK Successful operation" %}

```json
{
    "status": "success",
    "msg": "Task(s) successfully scheduled",
    "results": [
        {
            "user_id": 4281,
            "se": "google_advanced",
            "q": "Cold Cofee",
            "domain": "google.com",
            "lang": "en",
            "country_iso": "GB",
            "loc": "London,England,United Kingdom",
            "lat": "51.51",
            "long": "-0.13",
            "device": "desktop",
            "verbatim": 0,
            "date_range": null,
            "gfilter": "1",
            "pingback_url": null,
            "postback_url": null,
            "is_scheduled": 1,
            "page": 1,
            "num_result": 50,
            "updated_at": "2025-10-03T09:42:08.000000Z",
            "created_at": "2025-10-03T09:42:08.000000Z",
            "id": 211237003,
            "max_pages": 5
        },
        {
            "user_id": 4281,
            "se": "google_advanced",
            "q": "Coffee",
            "domain": "google.com",
            "lang": "en",
            "country_iso": "RU",
            "loc": "Russia",
            "lat": "61.52",
            "long": "105.32",
            "device": "desktop",
            "verbatim": 0,
            "date_range": null,
            "gfilter": "1",
            "pingback_url": null,
            "postback_url": null,
            "is_scheduled": 1,
            "page": 1,
            "num_result": 80,
            "updated_at": "2025-10-03T09:43:23.000000Z",
            "created_at": "2025-10-03T09:43:23.000000Z",
            "id": 211237016,
            "max_pages": 8
        },
        {
            "user_id": 4281,
            "se": "google_advanced",
            "q": "Tea",
            "domain": "google.com",
            "lang": "en",
            "country_iso": "US",
            "loc": "Alba,Texas,United States",
            "lat": "32.79",
            "long": "-95.63",
            "device": "desktop",
            "verbatim": 0,
            "date_range": null,
            "gfilter": "1",
            "pingback_url": null,
            "postback_url": null,
            "is_scheduled": 1,
            "page": 1,
            "num_result": 50,
            "updated_at": "2025-10-03T09:41:04.000000Z",
            "created_at": "2025-10-03T09:41:04.000000Z",
            "id": 211236971,
            "max_pages": 5
        }
    ]
}
```

{% endtab %}

{% tab title="400: Bad Request Failed validation" %}

```json
{
    "status": "error",
    "msg": "validation_error",
    "error": {
        "data.0.q": [
            "The data.0.q field is required."
        ]
    }
}
```

{% endtab %}

{% tab title="402: Payment Required Failed operation" %}

```json
{
    "status": "error",
    "msg": "Your SERPHouse account has either run out of available credits (try upgrading your Plan), or there is a payment problem. Current available credit is -> -1",
    "error": ""
}
```

{% endtab %}

{% tab title="401: Unauthorized Unauthenticated" %}

```json
{
    "status": "error",
    "msg": "Unauthenticated"
}
```

{% endtab %}
{% endtabs %}

## Example request:

{% tabs %}
{% tab title="BASH" %}

```bash
curl --location --request POST 'https://api.serphouse.com/serp/google_advanced_scheduled' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "data": [
        {
            "q": "Cold Cofee",
            "domain": "google.com",
            "lang": "en",
            "device": "desktop",
            "loc": "London,England,United Kingdom",
            "verbatim": 0,
            "max_pages":5
        },
        {
            "q": "Coffee",
            "domain": "google.com",
            "lang": "en",
            "device": "desktop",
            "loc": "Russia",
            "verbatim": 0,
            "max_pages":8
        },
        {
            "q": "Tea",
            "domain": "google.com",
            "lang": "en",
            "device":"desktop",
            "loc": "Alba,Texas,United States",
            "verbatim": 0,
            "max_pages":5
        }
    ]
}'
```

{% endtab %}

{% tab title="RUBY" %}

```ruby
require "uri"
require "json"
require "net/http"

url = URI("https://api.serphouse.com/serp/google_advanced_scheduled")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <YOUR_API_KEY>"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "data": [
    {
        "q": "Cold Cofee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "London,England,United Kingdom",
        "verbatim": 0,
        "max_pages":5
    },
    {
        "q": "Coffee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "Russia",
        "verbatim": 0,
        "max_pages":8
    },
    {
        "q": "Tea",
        "domain": "google.com",
        "lang": "en",
        "device":"desktop",
        "loc": "Alba,Texas,United States",
        "verbatim": 0,
        "max_pages":5
    }
  ]
})

response = https.request(request)
puts response.read_body

```

{% endtab %}

{% tab title="PYTHON" %}

```python
import requests
import json

url = "https://api.serphouse.com/serp/google_advanced_scheduled"

payload = json.dumps({
  "data": [
    {
        "q": "Cold Cofee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "London,England,United Kingdom",
        "verbatim": 0,
        "max_pages":5
    },
    {
        "q": "Coffee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "Russia",
        "verbatim": 0,
        "max_pages":8
    },
    {
        "q": "Tea",
        "domain": "google.com",
        "lang": "en",
        "device":"desktop",
        "loc": "Alba,Texas,United States",
        "verbatim": 0,
        "max_pages":5
    }
  ]
})
headers = {
  'Authorization': 'Bearer <YOUR_API_KEY>',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

```

{% endtab %}

{% tab title="NODE.JS" %}

```javascript
var axios = require('axios');
var data = JSON.stringify({
  "data": [
    {
        "q": "Cold Cofee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "London,England,United Kingdom",
        "verbatim": 0,
        "max_pages":5
    },
    {
        "q": "Coffee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "Russia",
        "verbatim": 0,
        "max_pages":8
    },
    {
        "q": "Tea",
        "domain": "google.com",
        "lang": "en",
        "device":"desktop",
        "loc": "Alba,Texas,United States",
        "verbatim": 0,
        "max_pages":5
    }
  ]
});

var config = {
  method: 'post',
  url: 'https://api.serphouse.com/serp/google_advanced_scheduled',
  headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer <YOUR_API_KEY>'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

```

{% endtab %}

{% tab title="JAVA" %}

```java
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");

JSONObject jsonObject = new JSONObject();
jsonObject.put("data", new JSONObject[]{
        new JSONObject()
                .put("q", "Cold Cofee")
                .put("domain", "google.com")
                .put("lang", "en")
                .put("device", "desktop")
                .put("loc", "London,England,United Kingdom")
                .put("verbatim", 0)
                .put("max_pages", 5),
        new JSONObject()
                .put("q", "Coffee")
                .put("domain", "google.com")
                .put("lang", "en")
                .put("device", "desktop")
                .put("loc", "Russia")
                .put("verbatim", 0)
                .put("max_pages", 8),
        new JSONObject()
               .put("q", "Tea")
                .put("domain", "google.com")
                .put("lang", "en")
                .put("device", "desktop")
                .put("loc", "Alba,Texas,United States")
                .put("verbatim", 0)
                .put("max_pages", 5)
});

String bodyJson = jsonObject.toString();

RequestBody body = RequestBody.create(mediaType,bodyJson);
Request request = new Request.Builder()
  .url("https://api.serphouse.com/serp/google_advanced_scheduled")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer <YOUR_API_KEY>")
  .build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
```

{% endtab %}

{% tab title="JAVASCRIPT" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer <YOUR_API_KEY>");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "data": [
    {
        "q": "Cold Cofee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "London,England,United Kingdom",
        "verbatim": 0,
        "max_pages":5
    },
    {
        "q": "Coffee",
        "domain": "google.com",
        "lang": "en",
        "device": "desktop",
        "loc": "Russia",
        "verbatim": 0,
        "max_pages":8
    },
    {
        "q": "Tea",
        "domain": "google.com",
        "lang": "en",
        "device":"desktop",
        "loc": "Alba,Texas,United States",
        "verbatim": 0,
        "max_pages":5
    }
  ]
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.serphouse.com/serp/google_advanced_scheduled", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.serphouse.com/serp/google_advanced_scheduled"
  method := "POST"

  payload := strings.NewReader(`{
    "data": [
        {
            "q": "Cold Cofee",
            "domain": "google.com",
            "lang": "en",
            "device": "desktop",
            "loc": "London,England,United Kingdom",
            "verbatim": 0,
            "max_pages":5
        },
        {
            "q": "Coffee",
            "domain": "google.com",
            "lang": "en",
            "device": "desktop",
            "loc": "Russia",
            "verbatim": 0,
            "max_pages":8
        },
        {
            "q": "Tea",
            "domain": "google.com",
            "lang": "en",
            "device":"desktop",
            "loc": "Alba,Texas,United States",
            "verbatim": 0,
            "max_pages":5
        }
    ]
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer <YOUR_API_KEY>")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="C#/.NET" %}

```csharp
var client = new RestClient("https://api.serphouse.com/serp/google_advanced_scheduled");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer <YOUR_API_KEY>");
var body = @"{
	""data"": [
		{
			""q"": ""Cold Cofee"",
			""domain"": ""google.com"",
			""lang"": ""en"",
			""device"": ""desktop"",
			""loc"": ""London,England,United Kingdom"",
			""verbatim"": 0,
			""max_pages"": 5
		},
		{
			""q"": ""Coffee"",
			""domain"": ""google.com"",
			""lang"": ""en"",
			""device"": ""desktop"",
			""loc"": ""Russia"",
			""verbatim"": 0,
			""max_pages"": 8
		},
		{
			""q"": ""Tea"",
			""domain"": ""google.com"",
			""lang"": ""en"",
			""device"": ""desktop"",
			""loc"": ""Alba,Texas,United States"",
			""verbatim"": 0,
			""max_pages"": 5
		}
	]
}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.serphouse.com/serp-api/google-schedule-serp-top-100-results.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
