---
title: Send Requests
slug: scaleserp/search-api/getting-started/send-requests
docTags: 
createdAt: 2024-11-07T22:10:35.254Z
---

# Send Requests

Scale SERP executes search requests in real time returning clean, structured `JSON`  `HTML` or `CSV` results. You can achieve fine-grained control over your search query using the [search parameters](https://docs.trajectdata.com/scaleserp/search-api/searches/common).&#x20;

:::hint{type="danger"}
�&#xDD04;**&#x20;This API endpoint uses a synchronous request model.&#x20;**&#x54;he response will be delivered immediately upon completion of the request.

If you prefer to collect responses later, you have two options:

- **Batch Processing**: Send requests in batches and use a webhook to retrieve batch results as they become available.
- **Download from UI**: Access completed results directly from the UI for later processing.
:::

***

### Making a Request

<font color="#52c41a">`GET`</font>  `/search`

Performing a search is as simple as making a  `GET`  HTTP request to the Scale SERP  `search`  endpoint. The only required parameters are  `api_key`  ([sign up](https://app.scaleserp.com/signup) for free to get an API key) and  `q`  (your search query).

For example, to search for the phrase  `pizza`  the Scale SERP search request would be:

:::CodeblockTabs
HTTP

```HTTP
https://api.scaleserp.com/search?api_key=demo&q=pizza
```

```curl
$ curl --get https://api.scaleserp.com/search \
  -d api_key="demo" \
  -d q="pizza"
```

```nodejs
const axios = require('axios');

// set up the request parameters
const params = {
  api_key: "demo",
  q: "pizza"
}

// make the http GET request to Scale SERP
axios.get('https://api.scaleserp.com/search', { params })
  .then(response => {

    // print the JSON response from Scale SERP
    console.log(JSON.stringify(response.data, 0, 2));

  }).catch(error => {
    // catch and print the error
    console.log(error);
  })
```

```python
import requests
import json

# set up the request parameters
params = {
  'api_key': 'demo',
  'q': 'pizza'
}

# make the http GET request to Scale SERP
api_result = requests.get('https://api.scaleserp.com/search', params)

# print the JSON response from Scale SERP
print(json.dumps(api_result.json()))
```

```php
# set up the request parameters
$queryString = http_build_query([
  'api_key' => 'demo',
  'q' => 'pizza'
]);

# make the http GET request to Scale SERP
$ch = curl_init(sprintf('%s?%s', 'https://api.scaleserp.com/search', $queryString));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
# the following options are required if you're using an outdated OpenSSL version
# more details: https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);

$api_result = curl_exec($ch);
curl_close($ch);

# print the JSON response from Scale SERP
echo $api_result;
```
:::

:::hint{type="info"}
To view Scale SERP JSON results clearly in your browser we recommend these -extensions for [Chrome](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc) and [Firefox](https://addons.mozilla.org/en-GB/firefox/addon/jsonview/)
:::

***

### Localize Results

Lets say we want to refine our query to search for  `pizza`  within  `London, UK` . Here's how we could use the Scale SERP  `location`  parameter to achieve just that:

:::CodeblockTabs
HTTP

```HTTP
https://api.scaleserp.com/search?api_key=demo&q=pizza&location=London,England,United Kingdom
```

```curl
$ curl --get https://api.scaleserp.com/search \
  -d api_key="demo" \
  -d q="pizza" \
  -d location="London,England,United Kingdom"
```

```nodejs
const axios = require('axios');

// set up the request parameters
const params = {
  api_key: "demo",
  q: "pizza",
  location: "London,England,United Kingdom"
}

// make the http GET request to Scale SERP
axios.get('https://api.scaleserp.com/search', { params })
  .then(response => {

    // print the JSON response from Scale SERP
    console.log(JSON.stringify(response.data, 0, 2));

  }).catch(error => {
    // catch and print the error
    console.log(error);
  })
```

```python
import requests
import json

# set up the request parameters
params = {
  'api_key': 'demo',
  'q': 'pizza',
  'location': 'London,England,United Kingdom'
}

# make the http GET request to Scale SERP
api_result = requests.get('https://api.scaleserp.com/search', params)

# print the JSON response from Scale SERP
print(json.dumps(api_result.json()))
```

```php
# set up the request parameters
$queryString = http_build_query([
  'api_key' => 'demo',
  'q' => 'pizza',
  'location' => 'London,England,United Kingdom'
]);

# make the http GET request to Scale SERP
$ch = curl_init(sprintf('%s?%s', 'https://api.scaleserp.com/search', $queryString));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
# the following options are required if you're using an outdated OpenSSL version
# more details: https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);

$api_result = curl_exec($ch);
curl_close($ch);

# print the JSON response from Scale SERP
echo $api_result;
```
:::

Now lets try the same search but in  `Paris, France` . When we update the  `location`  parameter note how Scale SERP automatically changes the  `google_domain`  parameter to `google.fr` and the  `gl`  (country) and  `hl`  (language) parameters to  `hl=fr`  (so you see localized results exactly as a human user in Paris would):

:::CodeblockTabs
HTTP

```HTTP
https://api.scaleserp.com/search?api_key=demo&q=pizza&location=Paris,Ile-de-France,France
```

```curl
$ curl --get https://api.scaleserp.com/search \
  -d api_key="demo" \
  -d q="pizza" \
  -d location="Paris,Ile-de-France,France"
```

```nodejs
const axios = require('axios');

// set up the request parameters
const params = {
  api_key: "demo",
  q: "pizza",
  location: "Paris,Ile-de-France,France"
}

// make the http GET request to Scale SERP
axios.get('https://api.scaleserp.com/search', { params })
  .then(response => {

    // print the JSON response from Scale SERP
    console.log(JSON.stringify(response.data, 0, 2));

  }).catch(error => {
    // catch and print the error
    console.log(error);
  })
```

```python
import requests
import json

# set up the request parameters
params = {
  'api_key': 'demo',
  'q': 'pizza',
  'location': 'Paris,Ile-de-France,France'
}

# make the http GET request to Scale SERP
api_result = requests.get('https://api.scaleserp.com/search', params)

# print the JSON response from Scale SERP
print(json.dumps(api_result.json()))
```

```php
# set up the request parameters
$queryString = http_build_query([
  'api_key' => 'demo',
  'q' => 'pizza',
  'location' => 'Paris,Ile-de-France,France'
]);

# make the http GET request to Scale SERP
$ch = curl_init(sprintf('%s?%s', 'https://api.scaleserp.com/search', $queryString));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
# the following options are required if you're using an outdated OpenSSL version
# more details: https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);

$api_result = curl_exec($ch);
curl_close($ch);

# print the JSON response from Scale SERP
echo $api_result;
```
:::



:::::VerticalSplit{layout="right"}
:::VerticalSplitItem
This quickstart that will get you up and running with Postman and Scale Serp API
:::

::::VerticalSplitItem
:::CtaButton{label="Download Postman Collection" openInNewTab="true"}

:::
::::
:::::



### Paginate through Results

Now lets take a look at how to paginate through results using the  `page`  parameters. `page` determines the page number of the results (starting from 1). If we wanted to show the 2nd page of results, our query would be:

:::CodeblockTabs
HTTP

```HTTP
https://api.scaleserp.com/search?api_key=demo&q=pizza&page=2
```

```curl
$ curl --get https://api.scaleserp.com/search \
  -d api_key="demo" \
  -d q="pizza" \
  -d page="2" \
  -d num="10"
```

```nodejs
const axios = require('axios');

// set up the request parameters
const params = {
  api_key: "demo",
  q: "pizza",
  page: "2",
  num: "10"
}

// make the http GET request to Scale SERP
axios.get('https://api.scaleserp.com/search', { params })
  .then(response => {

    // print the JSON response from Scale SERP
    console.log(JSON.stringify(response.data, 0, 2));

  }).catch(error => {
    // catch and print the error
    console.log(error);
  })
```

```python
import requests
import json

# set up the request parameters
params = {
  'api_key': 'demo',
  'q': 'pizza',
  'page': '2',
  'num': '10'
}

# make the http GET request to Scale SERP
api_result = requests.get('https://api.scaleserp.com/search', params)

# print the JSON response from Scale SERP
print(json.dumps(api_result.json()))
```

```php
# set up the request parameters
$queryString = http_build_query([
  'api_key' => 'demo',
  'q' => 'pizza',
  'page' => '2',
  'num' => '10'
]);

# make the http GET request to Scale SERP
$ch = curl_init(sprintf('%s?%s', 'https://api.scaleserp.com/search', $queryString));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
# the following options are required if you're using an outdated OpenSSL version
# more details: https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);

$api_result = curl_exec($ch);
curl_close($ch);

# print the JSON response from Scale SERP
echo $api_result;
```
:::

***

