SEO Top pages API
Get AnyAPI SEO top pages of a domain by organic search, each with ranking keyword counts, estimated traffic and its ad value, and position distribution as normalized JSON.
Try it
Make your first request
{
"data": {
"pages": [
{
"organicDown": 42,
"organicKeywords": 42,
"organicLost": 42,
"organicNew": 42,
"organicPos1": 42,
"organicPos11To20": 42,
"organicPos21To30": 42,
"organicPos2To3": 42,
"organicPos31To40": 42,
"organicPos41To50": 42,
"organicPos4To10": 42,
"organicPos51To60": 42,
"organicPos61To70": 42,
"organicPos71To80": 42,
"organicPos81To90": 42,
"organicPos91To100": 42,
"organicTraffic": 12500,
"organicTrafficCostUsd": 19.99,
"organicUp": 42,
"paidDown": 1024,
"paidKeywords": 1024,
"paidLost": 1024,
"paidNew": 1024,
"paidPos1": 1024,
"paidPos11To20": 1024,
"paidPos21To30": 1024,
"paidPos2To3": 1024,
"paidPos31To40": 1024,
"paidPos41To50": 1024,
"paidPos4To10": 1024,
"paidPos51To60": 1024,
"paidPos61To70": 1024,
"paidPos71To80": 1024,
"paidPos81To90": 1024,
"paidPos91To100": 1024,
"paidTraffic": 12500,
"paidTrafficCostUsd": 19.99,
"paidUp": 1024,
"url": "https://example.com/page"
}
],
"totalCount": 12500
},
"found": true,
"reason": "not_found"
}interface SeoTopPagesResponse {
data: {
pages: {
organicDown?: number;
organicKeywords?: number;
organicLost?: number;
organicNew?: number;
organicPos1?: number;
organicPos11To20?: number;
organicPos21To30?: number;
organicPos2To3?: number;
organicPos31To40?: number;
organicPos41To50?: number;
organicPos4To10?: number;
organicPos51To60?: number;
organicPos61To70?: number;
organicPos71To80?: number;
organicPos81To90?: number;
organicPos91To100?: number;
organicTraffic?: number;
organicTrafficCostUsd?: number;
organicUp?: number;
paidDown?: number;
paidKeywords?: number;
paidLost?: number;
paidNew?: number;
paidPos1?: number;
paidPos11To20?: number;
paidPos21To30?: number;
paidPos2To3?: number;
paidPos31To40?: number;
paidPos41To50?: number;
paidPos4To10?: number;
paidPos51To60?: number;
paidPos61To70?: number;
paidPos71To80?: number;
paidPos81To90?: number;
paidPos91To100?: number;
paidTraffic?: number;
paidTrafficCostUsd?: number;
paidUp?: number;
url: string;
}[];
totalCount?: number;
} | null;
found: boolean;
reason?: "not_found";
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-24 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/seo.top_pages \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"limit":10,"target":"ahrefs.com"}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| target | string | "ahrefs.com"Domain to analyze, without a protocol or leading www. |
| language | string | Language code for search metrics. |
| limit | integer | 10Maximum number of pages to return. You are billed per returned result, so a lower limit costs less. |
| location | integer | Location code for search metrics. The default is the United States. |
| status | enum | Count rankings the page holds now, rankings it has lost, or both. |
| Response | ||
| data | object | |
| data.pages | object[] | Pages of the domain ranked by organic search traffic. Populated whenever the provider has data for the entity. |
| data.pages[].organicDown | integer | Organic keywords that moved down since the previous update. |
| data.pages[].organicKeywords | integer | Keywords the page ranks for in organic results. Populated whenever the provider has data for the entity. |
| data.pages[].organicLost | integer | Organic keywords no longer ranking since the previous update. |
| data.pages[].organicNew | integer | Organic keywords newly ranking since the previous update. |
| data.pages[].organicPos1 | integer | Organic keywords ranking the page at positions 1. |
| data.pages[].organicPos11To20 | integer | Organic keywords ranking the page at positions 11-20. |
| data.pages[].organicPos21To30 | integer | Organic keywords ranking the page at positions 21-30. |
| data.pages[].organicPos2To3 | integer | Organic keywords ranking the page at positions 2-3. |
| data.pages[].organicPos31To40 | integer | Organic keywords ranking the page at positions 31-40. |
| data.pages[].organicPos41To50 | integer | Organic keywords ranking the page at positions 41-50. |
| data.pages[].organicPos4To10 | integer | Organic keywords ranking the page at positions 4-10. |
| data.pages[].organicPos51To60 | integer | Organic keywords ranking the page at positions 51-60. |
| data.pages[].organicPos61To70 | integer | Organic keywords ranking the page at positions 61-70. |
| data.pages[].organicPos71To80 | integer | Organic keywords ranking the page at positions 71-80. |
| data.pages[].organicPos81To90 | integer | Organic keywords ranking the page at positions 81-90. |
| data.pages[].organicPos91To100 | integer | Organic keywords ranking the page at positions 91-100. |
| data.pages[].organicTraffic | number | Estimated monthly organic traffic to the page. Populated whenever the provider has data for the entity. |
| data.pages[].organicTrafficCostUsd | number | Estimated monthly cost in USD of buying the page's organic traffic as ads. |
| data.pages[].organicUp | integer | Organic keywords that moved up since the previous update. |
| data.pages[].paidDown | integer | Paid keywords that moved down since the previous update. |
| data.pages[].paidKeywords | integer | Keywords the page ranks for in paid results. |
| data.pages[].paidLost | integer | Paid keywords no longer ranking since the previous update. |
| data.pages[].paidNew | integer | Paid keywords newly ranking since the previous update. |
| data.pages[].paidPos1 | integer | Paid keywords ranking the page at positions 1. |
| data.pages[].paidPos11To20 | integer | Paid keywords ranking the page at positions 11-20. |
| data.pages[].paidPos21To30 | integer | Paid keywords ranking the page at positions 21-30. |
| data.pages[].paidPos2To3 | integer | Paid keywords ranking the page at positions 2-3. |
| data.pages[].paidPos31To40 | integer | Paid keywords ranking the page at positions 31-40. |
| data.pages[].paidPos41To50 | integer | Paid keywords ranking the page at positions 41-50. |
| data.pages[].paidPos4To10 | integer | Paid keywords ranking the page at positions 4-10. |
| data.pages[].paidPos51To60 | integer | Paid keywords ranking the page at positions 51-60. |
| data.pages[].paidPos61To70 | integer | Paid keywords ranking the page at positions 61-70. |
| data.pages[].paidPos71To80 | integer | Paid keywords ranking the page at positions 71-80. |
| data.pages[].paidPos81To90 | integer | Paid keywords ranking the page at positions 81-90. |
| data.pages[].paidPos91To100 | integer | Paid keywords ranking the page at positions 91-100. |
| data.pages[].paidTraffic | number | Estimated monthly paid traffic to the page. |
| data.pages[].paidTrafficCostUsd | number | Estimated monthly cost in USD of buying the page's paid traffic as ads. |
| data.pages[].paidUp | integer | Paid keywords that moved up since the previous update. |
| data.pages[].url | string | Page URL. Populated whenever the provider has data for the entity. |
| data.totalCount | integer | Total ranking pages, before the limit. Populated whenever the provider has data for the entity. |
| found | boolean | |
| reason | "not_found" | Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost. |
| Price | ||
| Price per request (ceiling) | USD | $0.1584 |
| Price /1k results | USD | $0.165 |
FAQ
About the SEO Top pages API
The AnyAPI SEO Top pages API returns SEO top pages data as normalized JSON from one POST call to /v1/run/seo.top_pages. Get AnyAPI SEO top pages of a domain by organic search, each with ranking keyword counts, estimated traffic and its ad value, and position distribution as normalized JSON. AnyAPI returns one normalized schema whichever source serves it. It costs $0.17 per 1,000 results, and never more than $0.1584 for a single request, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of SEO top pages calls through AnyAPI succeeded, with a median response time of 0.8 seconds across 1 measured calls.