The competitors set up for a website, and the topic gaps between their pages and yours.
Gaps are only produced once a competitor has been read at least once and your own topics exist, so call `POST /sites/{site_id}/competitors/{competitor_id}/crawl` first if `crawled` is false. Topics come from your own Search Console queries, so a gap always sits on a topic you already have demand for.
GET
https://app.softsolz.uk/api/v1/services/seo/sites/{site_id}/competitorsRecent Requests
Log in to see full request historyTimeStatusUser Agent
Make a request to see history.
Path Params
site_idstringrequiredHeaders
AuthorizationstringrequiredBearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.
Response
Response Body
competitorsarray of objectsSet up for this website.gapsarray of objectsLargest first.crawledbooleanWhether any competitor has been read yet.measurablebooleanFalse when gaps cannot be computed yet. Read reason to find out what is missing.reasonstring | nullneeds_crawl when your own website has not been crawled, no_topics when your search data has not been clustered yet, null when gaps were computed.revisioninteger | nullWhich build of your topics the gaps were computed against.notestringWhat this data is and is not.Request
import { SoftSolz } from '@softsolz/sdk';
const client = new SoftSolz({ apiKey: process.env.SOFTSOLZ_API_KEY });
const result = await client.seo.listCompetitors('<site_id>');console.log(result);Credentials
Sent as a Bearer token. Stored only in your browser.
Response · 200
{ "data": { "competitors": [], "gaps": [], "crawled": true, "measurable": true, "reason": "string", "revision": 0, "note": "string" }}