> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nativeport.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nativeport.ai/_mcp/server.

# DataForSEO

Fronts the **live** — i.e. instant-response — endpoints of [DataForSEO](https://dataforseo.com) at `https://api.dataforseo.com`: SERP, Keywords Data, Backlinks, DataForSEO Labs, On-Page, Merchant, and others, each in its `live` form. The path following `/dataforseo/` is relayed upstream, restricted to the live actions:

```
POST /dataforseo/<api path>   → https://api.dataforseo.com/<api path>
```

Admission is default-deny against a fixed allowlist: endpoints in `live` form (any `POST /v3/…/live[/…]`) plus `POST /v3/on_page/instant_pages` are what passes, and every other path draws a `404` until the endpoint concerned is added to the allowlist. Kept out: the `task_post` / `task_get` / `tasks_ready` queued-task flow, plus every `GET` read, `appendix/user_data` included. Mounted methods: `POST`.

## Common paths

| Path                                                              | Purpose               |
| ----------------------------------------------------------------- | --------------------- |
| `POST /dataforseo/v3/serp/google/organic/live/advanced`           | Live Google SERP      |
| `POST /dataforseo/v3/keywords_data/google_ads/search_volume/live` | Keyword search volume |
| `POST /dataforseo/v3/backlinks/summary/live`                      | Backlinks summary     |
| `POST /dataforseo/v3/on_page/instant_pages`                       | On-Page analysis      |
| `POST /dataforseo/v3/dataforseo_labs/google/keyword_ideas/live`   | Labs keyword ideas    |

## Credential handling

DataForSEO uses HTTP **Basic** auth (`Authorization: Basic <base64 of login:password>`), which occupies the same `Authorization` header your gateway token rides in. The gateway therefore **replaces** that header with the credential it injects:

* **`Authorization` is overwritten with DataForSEO's secret Basic credential.** Your DataForSEO login and password never appear in your requests, and your gateway token stops at the gateway rather than traveling upstream.
* No query-param form of the credential exists on DataForSEO's side, so nothing gets removed from the query string.

## Examples

#### Live SERP (POST)

```bash
curl -X POST "$GATEWAY/dataforseo/v3/serp/google/organic/live/advanced" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '[{"keyword": "coffee", "location_code": 2840, "language_code": "en"}]'
```

#### Keyword volume (POST)

```bash
curl -X POST "$GATEWAY/dataforseo/v3/keywords_data/google_ads/search_volume/live" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '[{"keywords": ["coffee"], "location_code": 2840, "language_code": "en"}]'
```

Responses arrive as DataForSEO's JSON, untouched. Field-level request and response detail lives in [DataForSEO's documentation](https://docs.dataforseo.com); the gateway modifies neither.