Unif API Docs

Collect organic SERP SEO evidence

Run one live organic SERP check for SEO optimization evidence, including target visibility, competitor domains, rich SERP features, normalized per-result checks, People Also Ask context, AI Overview presence, and optional pixel ranking data.

Pricing — $ · min $0.01

Minimum 10 credits ($0.01) per call. Records returned above the minimum bill 1 credit ($0.001) each.

POST
/seo/serp

Authorization

bearerAuth
AuthorizationBearer <token>

UnifAPI API key. Provider credentials are managed by UnifAPI.

In: header

Header Parameters

Unifapi-Version?"2026-07-01"

Pin the API version an integration was built against (date-based, e.g. 2026-07-01). Omit to use the current version. Public URL paths stay stable and unversioned; breaking changes ship under a new dated version and are announced with Deprecation and Sunset response headers. The served version is echoed in every response's Unifapi-Version header. Policy: https://unifapi.com/versioning.md

Default"2026-07-01"

Value in

  • "2026-07-01"
Idempotency-Key?string

Client-supplied unique key that makes a write request safe to retry. If a request with the same key was already processed, the original response is replayed (with Idempotency-Replayed: true) instead of executing — and billing — again. Send a fresh UUID per logical operation. Best-effort with a 24h window.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/seo/serp" \  -H "Content-Type: application/json" \  -d '{    "query": "string"  }'
{  "request_id": "string",  "data": {    "query": "string",    "location": "string",    "language": "string",    "device": "desktop",    "os": "windows",    "view": "summary",    "rank_window": {      "page": 0,      "depth": 0,      "start_rank": 0,      "end_rank": 0,      "rank_offset": 0    },    "observed_at": "string",    "search_url": "string",    "total_results": 0,    "serp_features": [      "string"    ],    "summary": {      "organic_results": 0,      "billable_results": 0,      "rich_results": 0,      "paid_results": 0,      "feature_counts": {        "property1": 0,        "property2": 0      },      "check_counts": {        "property1": 0,        "property2": 0      },      "target_present": true,      "target_best_rank": 0    },    "questions": [      {        "question": "string",        "rank": 0,        "source": "people_also_ask"      }    ],    "results": [      {        "rank": 0,        "source_rank": 0,        "group_rank": 0,        "type": "string",        "title": "string",        "url": "string",        "domain": "string",        "snippet": "string",        "text": "string",        "markdown": "string",        "breadcrumb": "string",        "page": 0,        "position": null,        "rectangle": null,        "is_paid": true,        "is_billable": true,        "is_target": true,        "questions": [          "string"        ],        "checks": [          "string"        ],        "nested_items": [          null        ],        "extras": {          "property1": null,          "property2": null        }      }    ],    "target": {      "value": "string",      "domain": "string",      "present": true,      "best_rank": 0,      "matches": [        {          "rank": 0,          "type": "string",          "title": "string",          "url": "string",          "domain": "string"        }      ]    },    "competitors": [      {        "domain": "string",        "best_rank": 0,        "result_count": 0      }    ]  },  "billing": {    "credits_charged": 0,    "records_charged": 0,    "balance_remaining": 0,    "truncated_due_to_balance": true  }}