SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester
seo

One page: its Google figures, the searches that lead to it and where those searchers are.

Pass the page address as url. Returns the page totals with the comparison, every search that showed it (up to 500, most clicks first) and its clicks and impressions per country. Addresses are matched the way SEO Intelligence matches pages: with or without www, a trailing slash or tracking parameters.

GEThttps://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/search-performance/page

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Path Params

site_idstringrequired

Headers

Authorizationstringrequired

Bearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.

Query Params

urlstring

The full page address, starting with https://.

rangestring

7d, 28d, 3m, 6m, 12m or all. Ignored when from and to are set.

fromstring

First day (YYYY-MM-DD), inclusive.

tostring

Last day (YYYY-MM-DD), inclusive.

comparestring

previous (default), year (same days a year earlier) or none.

countrystring

Only searches from one country: a two-letter ISO code or Google's three-letter code.

Response

Response Body

siteobjectThe website.
sourcestringlive (asked Google for exactly these days), monthly (whole months from stored data, used when Google could not be reached) or daily (countries from stored daily totals).
stalebooleanTrue when an older copy of Google's answer was used.
reconnect_requiredbooleanTrue when the Search Console connection needs to be reconnected.
fallback_reasonstring | nullWhy monthly data was used: reconnect_required, google_failed, rate_limited or not_connected.
effective_rangeobjectWith monthly data: the whole months actually covered.
truncatedbooleanTrue when Google returned more rows than are kept, so only the top rows by clicks are included.
rangeobjectThe range used.
previous_rangeobjectThe comparison range, or null.
pageobjectThe page with its figures, previous and change.
queriesarray of objectsSearches that showed the page.
countriesarray of objectsClicks and impressions per country.

Request

curl --request GET \
--url https://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/search-performance/page \
--header 'Authorization: Bearer sk_live_your_key'

Credentials

Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser. Use an sk_test_ key to stay in your sandbox.

Response · 200

{
"data": {
"site": {
"id": "3f2b9c44-8f4e-4d0a-9c1b-2a7d6e5f1a23",
"name": "Main site",
"domain": "example.com"
},
"source": "live",
"stale": false,
"reconnect_required": false,
"fallback_reason": null,
"effective_range": null,
"truncated": false,
"range": {
"key": "28d",
"label": "Last 28 days",
"from": "2026-09-09",
"to": "2026-10-06",
"days": 28
},
"previous_range": {
"from": "2026-08-12",
"to": "2026-09-08"
},
"page": {
"url": "https://example.com/blog/how-to",
"clicks": 40,
"impressions": 900,
"ctr": 0.0444,
"position": 6.1
},
"queries": [
{
"key": "https://example.com/pricing",
"url": "https://example.com/pricing",
"path": "/pricing",
"title": null,
"query": "pricing software",
"country": "gbr",
"country_code": "GB",
"clicks": 120,
"impressions": 4200,
"ctr": 0.0286,
"position": 8.4,
"previous": {
"clicks": 120,
"impressions": 4200,
"ctr": 0.0286,
"position": 8.4
},
"change": {
"clicks": 0.25,
"clicks_delta": 24,
"impressions": 0.1,
"ctr": 0.004,
"position": -1.2
}
}
],
"countries": [
{
"key": "https://example.com/pricing",
"url": "https://example.com/pricing",
"path": "/pricing",
"title": null,
"query": "pricing software",
"country": "gbr",
"country_code": "GB",
"clicks": 120,
"impressions": 4200,
"ctr": 0.0286,
"position": 8.4,
"previous": {
"clicks": 120,
"impressions": 4200,
"ctr": 0.0286,
"position": 8.4
},
"change": {
"clicks": 0.25,
"clicks_delta": 24,
"impressions": 0.1,
"ctr": 0.004,
"position": -1.2
}
}
]
}
}