Keyword SERP Snapshot
const url = 'https://sitechecker.pro/api/v1/serp_snapshot?project_id=12345&tracked_keyword_id=1&top_n=100';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://sitechecker.pro/api/v1/serp_snapshot?project_id=12345&tracked_keyword_id=1&top_n=100' \ --header 'Authorization: Bearer <token>'Returns a Top-100 search results snapshot for one tracked keyword on the selected date. It is an on-demand endpoint, takes one keyword per request, and carries no trend points.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
Tracked keyword id from the keywords endpoint.
SERP check date (Y-m-d). Defaults to the latest available snapshot.
Number of SERP results to return (max 100).
Responses
Section titled “Responses”SERP snapshot with keyword context
object
On-demand top-100 SERP snapshot for one tracked keyword. description is null in V1 (the upstream source does not store SERP snippets).
object
Tracked keyword the snapshot is for.
Keyword text.
Search engine the keyword is tracked on.
Device the keyword is tracked on.
Id of the tracked location.
Display name of the tracked location.
Country the keyword is tracked for, as ISO-3166-1 alpha-2.
Display name of that country.
Language the keyword is tracked for, as ISO-639-1.
Display name of that language.
Date the SERP was captured.
The top 100 results, in the order they were shown.
object
Result URL.
Host of the result URL.
Result title.
Result snippet. Always null in this version — the upstream source does not store SERP snippets.
Example
{ "data": { "tracked_keyword_id": 123456, "keyword": "moz rank check", "search_engine": "google", "device": "desktop", "location_id": "loc_TmV3IFlvcmssVW5pdGVkIFN0YXRlcw", "location_name": "New York,United States", "country_code": "US", "country_name": "United States", "language_code": "en", "language_name": "English", "snapshot_date": "2026-05-22", "results": [ { "position": 1, "url": "https://moz.com/domain-analysis", "domain": "moz.com", "title": "Free Domain Authority Checker", "description": null } ] }}Missing or invalid API key
Returned as INVALID_API_KEY when the key is missing or unknown, and as REVOKED_API_KEY when the key exists but was revoked — the latter needs a new key.
object
object
Example
{ "error": { "code": "INVALID_API_KEY", "message": "Invalid or missing API key." }}No active API entitlement for the account, or the project belongs to another account
Returned as MISSING_PUBLIC_API_ACCESS when the account has no active API entitlement, and as ACCESS_DENIED when the requested project belongs to another account.
object
object
Example
{ "error": { "code": "MISSING_PUBLIC_API_ACCESS", "message": "API access is not available: the account has no active API entitlement." }}Project, keyword, or snapshot not found
The exact missing resource is in error.code: PROJECT_NOT_FOUND, SEGMENT_NOT_FOUND, CRAWL_NOT_FOUND, KEYWORD_NOT_FOUND, OPPORTUNITY_NOT_FOUND, SNAPSHOT_UNAVAILABLE or NOT_FOUND.
object
object
Example
{ "error": { "code": "PROJECT_NOT_FOUND", "message": "Project not found." }}Validation error
Rejected query parameters. error.code is VALIDATION_ERROR for parameter validation (including a query parameter the endpoint does not accept), or INVALID_DATE_RANGE / INVALID_FILTER / INVALID_EVENT_TYPE / UNSUPPORTED_FILTER / UNSUPPORTED_DIMENSION / UNSUPPORTED_METRIC / UNSUPPORTED_SCOPE / SEGMENT_FILTER_UNSUPPORTED for module-specific rules.
object
object
Example
{ "error": { "code": "VALIDATION_ERROR", "message": "project_id is required." }}Rate limit exceeded — retry after the interval in the Retry-After header
object
object
Example
{ "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Rate limit exceeded. Try again later." }}Internal server error
object
object
Example
{ "error": { "code": "INTERNAL_ERROR", "message": "Internal server error." }}Upstream SERP data service error
object
object
Example
{ "error": { "code": "UPSTREAM_ERROR", "message": "The upstream SERP data service is temporarily unavailable. Try again later." }}