The Search Visibility score for a website, with every part explained.
Three pillars, each 0 to 100: SEO (Google and Bing search, from the monthly SEO score), GEO (how AI models talk about you) and AEO (how well your pages answer the questions people ask). The overall score weights SEO 45%, GEO 25% and AEO 30% over the pillars that have data; a pillar with no data is null, left out and lowers the confidence, it is never counted as zero. Every component says whether it is measured (read from Search Console, your robots.txt file, recorded AI model answers or visit counts) or estimated (worked out from page structure or wording), where it came from and when. GEO splits into what AI models were observed to say (60%) and how ready your pages are to be quoted (40%); with no observations it rests on readiness alone. Observations are answers from the specific models that were checked, through their APIs or sent in by your own AI app, on the dates shown. They are not every AI product, and they do not show that an AI product used or ranked a page. Returns the latest score, the one before it and the last 90 days. The score is worked out once a day after the website is read, checked or refreshed. Spends no SoftSolz AI credits.
https://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/visibilityRecent Requests
Kept only in this browserPath Params
site_idstringrequiredHeaders
AuthorizationstringrequiredBearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.
Response
Response Body
scoreobject | nullOne day of the Search Visibility score, or null when nothing is measured yet.previousobject | nullThe score before the latest one, or null.historyarray of objectsDaily points for the last 90 days, oldest first.weightsobjectHow much each pillar counts toward the overall score.Request
curl --request GET \ --url https://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/visibility \ --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 tab until you close it. Use an sk_test_ key to stay in your sandbox.
Response · 200
{ "data": { "score": { "day": "2026-10-08", "overall": 58.2, "seo": 64, "geo": 41.5, "aeo": 55, "components": { "seo": [ { "key": "mention_rate", "label": "AI answers that mention you", "value": 42.5, "weight": 0.21, "measured": true, "source": "ai_checks", "as_of": "2026-10-01T09:00:00.000Z", "detail": "Share of checked AI model answers that name your brand. Based on 40 checks.", "inputs": { "part": "observed", "checks": 40 } } ], "geo": [], "aeo": [] }, "confidence": { "seo": "high", "geo": "low", "aeo": "medium", "overall": "low" }, "pillars_measured": [ "seo" ], "calc_version": "1", "computed_at": "2026-09-01T09:00:00.000Z" }, "previous": { "day": "2026-10-08", "overall": 58.2, "seo": 64, "geo": 41.5, "aeo": 55, "components": { "seo": [ { "key": "mention_rate", "label": "AI answers that mention you", "value": 42.5, "weight": 0.21, "measured": true, "source": "ai_checks", "as_of": "2026-10-01T09:00:00.000Z", "detail": "Share of checked AI model answers that name your brand. Based on 40 checks.", "inputs": { "part": "observed", "checks": 40 } } ], "geo": [], "aeo": [] }, "confidence": { "seo": "high", "geo": "low", "aeo": "medium", "overall": "low" }, "pillars_measured": [ "seo" ], "calc_version": "1", "computed_at": "2026-09-01T09:00:00.000Z" }, "history": [ { "day": "2026-10-08", "overall": 58.2, "seo": 64, "geo": 41.5, "aeo": 55 } ], "weights": { "seo": 0.45, "geo": 0.25, "aeo": 0.3 } }}