---
title: "The Search Console properties a site reads from"
method: GET
path: "/v1/sites/{site}/search/sources"
tags: ["gsc"]
---

# The Search Console properties a site reads from

`GET /v1/sites/{site}/search/sources`

## Request

- Base URL: `https://frontshelf.io/api`
- URL: `https://frontshelf.io/api/v1/sites/{site}/search/sources`
- Auth: HTTP bearer

The Search Console properties Frontshelf reads for a site: the primary first (what every gsc read uses unless `source_id` names another), then each alternate. Each has its `scope` sentence (which pages it counts), `role`, `access` (available, reauth, lost), `status`, and per search type whether Google supports it, the first day of history, the last final and provisional days and the days about to expire unfetched. One with no figures yet carries `wait`: why, with the dashboard's sentence (a lapsed account, no account, paused; else its place in the sync queue). Reading it moves nothing in the queue. Free. Next: pass a `source_id` to the other gsc reads to read an alternate; gsc_sources_choose makes one the primary.

## Path parameters

- `site` string, required: Site ID (site_…), origin (https://example.com), or bare domain, resolved server-side; the response carries the canonical ID.

## Response `200`

The Search Console properties a site reads from

- object
  - `summary` string, required: The answer in one or two sentences, with the numbers it rests on.
  - `warnings` string[], required: What limits this answer (a cap, a read that was cut short). Empty when nothing does.
  - `next_actions` object[], required: What to call next, best first. Follow them.
    - `capability` string, required: What to call next: a capability.
    - `arguments` object, required: Its arguments, complete; pass them as they are.
    - `instruction` string, required: What to do, written to you.
  - `site_id` string, required: The site's canonical id.
  - `items` object[], required
    - `source_id` string, required: The property's id (ssrc_…), the `source_id` the other gsc reads take.
    - `property` string, required: The property as Google names it (https://example.com/ or sc-domain:example.com).
    - `kind` 'domain' | 'url_prefix', required
    - `scope` string, required: Which pages the property counts, in one sentence.
    - `role` string, required: `primary` (what the reads use by default) or `alternate`.
    - `access` string, required: available, reauth or lost.
    - `status` string, required
    - `first_look_at` string, nullable, required: When the sync marked its first look; null while unmarked, which says nothing about figures.
    - `wait` union, required: Why the property has no figures yet, while its web type holds none, with the dashboard's own sentence: a lapsed account, no account or syncing paused (`not_syncing`), else its place in the sync queue (`ahead`, always a count; `wait_ms` null when unmeasured, never 0). Null once it has figures. Reading it moves nothing in the queue.
      - object
        - `state` 'running', required
        - `first_look_ms` number, nullable, required
        - `sentence` string, required
      - object
        - `state` 'waiting', required
        - `ahead` integer, required
        - `wait_ms` number, nullable, required
        - `sentence` string, required
      - object
        - `state` 'idle', required
        - `resumes_in_ms` number, nullable, required
        - `after_error` boolean, required
        - `sentence` string, required
      - object
        - `state` 'not_syncing', required
        - `reason` 'reauth' | 'lost' | 'paused', required
        - `sentence` string, required
    - `types` object, required: Per search type: whether Google supports it, the first day of history, the last final and provisional days.
      - `web` object, required
        - `support` 'supported' | 'unsupported' | 'unknown', required
        - `history_from` string, nullable, required
        - `final_through` string, nullable, required
        - `provisional_through` string, nullable, required
        - `expiring_unfetched` integer, required: Days about to leave Google's 16-month window unfetched.
      - `image` object, required
        - `support` 'supported' | 'unsupported' | 'unknown', required
        - `history_from` string, nullable, required
        - `final_through` string, nullable, required
        - `provisional_through` string, nullable, required
        - `expiring_unfetched` integer, required: Days about to leave Google's 16-month window unfetched.
      - `video` object, required
        - `support` 'supported' | 'unsupported' | 'unknown', required
        - `history_from` string, nullable, required
        - `final_through` string, nullable, required
        - `provisional_through` string, nullable, required
        - `expiring_unfetched` integer, required: Days about to leave Google's 16-month window unfetched.
      - `news` object, required
        - `support` 'supported' | 'unsupported' | 'unknown', required
        - `history_from` string, nullable, required
        - `final_through` string, nullable, required
        - `provisional_through` string, nullable, required
        - `expiring_unfetched` integer, required: Days about to leave Google's 16-month window unfetched.
      - `discover` object, required
        - `support` 'supported' | 'unsupported' | 'unknown', required
        - `history_from` string, nullable, required
        - `final_through` string, nullable, required
        - `provisional_through` string, nullable, required
        - `expiring_unfetched` integer, required: Days about to leave Google's 16-month window unfetched.
      - `googleNews` object, required
        - `support` 'supported' | 'unsupported' | 'unknown', required
        - `history_from` string, nullable, required
        - `final_through` string, nullable, required
        - `provisional_through` string, nullable, required
        - `expiring_unfetched` integer, required: Days about to leave Google's 16-month window unfetched.
  - `truncated` false, required: Always false: the list is never cut.
  - `total` integer, required

## Other responses

- `400`: VALIDATION_FAILED
- `401`: UNAUTHENTICATED
- `403`: SCOPE_DENIED
- `404`: SITE_NOT_FOUND
- `409`: AMBIGUOUS_SITE, SEARCH_NOT_CONNECTED, AGENT_STOPPED
- `503`: DEPENDENCY_UNAVAILABLE

---

[API](https://skmtc.dev/frontshelf/apis/frontshelf-api.md) · [All operations](https://skmtc.dev/frontshelf/apis/frontshelf-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frontshelf/apis/frontshelf-api/revisions/ce3602d26c7c?raw)
