Search Console

Your Search Console rows, by day

Your own retained Search Console rows for one selected property, aggregated by date × page (or date × page × query with dimensions=page,query,date). Rows always carry date, never day. Read-only and additive: no Google request, no pull, no write. Every row is filtered to your account and the exact property. Aggregation uses the real page × query grain only (page and query non-empty, all-device, all-country): clicks and impressions are summed, ctr is sum(clicks)/sum(impressions) (0 with no impressions) and position is the impression-weighted sum(position*impressions)/sum(impressions) (null with no impressions) — CTRs and positions are never averaged unweighted. An empty rows array means no retained rows for the window, never zero-filled days. Coverage is honest, not complete: Google returns only its top rows per request and the pull stops after four pages per chunk, so anonymized queries and capped rows are absent. pulled_through is the last day actually pulled; last_pulled_at is the most recent recorded pull attempt for the property, which may itself have failed, so neither claims the window is complete. These are observed search metrics; they do not show that any link or placement caused a change. Read with a customer key (read scope) or a dashboard session; the operator token is refused, and any Authorization header (even empty or whitespace) is answered by key authentication rather than a session. Errors and successes are private and no-store, and private URLs, queries and rows are never logged.

get/v1/gsc/daily

Request

  • Base URL: https://api.placementapi.com
  • URL: https://api.placementapi.com/v1/gsc/daily
  • Auth: HTTP bearer

Query parameters

propertystring required

The Search Console property to read, exactly as Google names it (e.g. sc-domain:example.com). It must be visible to your connection and selected for pulling, else 403 property_not_selected.

fromstring date required

Inclusive start day, YYYY-MM-DD.

tostring date required

Inclusive end day, YYYY-MM-DD. from and to may be at most 180 days apart.

pagestring[]

Exact page URL to filter to. Repeat for several (at most 100); the exact spelling is preserved and duplicates are collapsed.

dimensions'page,date' | 'page,query,date'

page,date sums each page's queries together; page,query,date keeps the query column.

cursorstring

Opaque continuation cursor from next_cursor. It carries only the last group's day and an internal decimal id, is bound by hash to the account and the full filter set, and is only a position marker (never an authorization credential, and never a copy of a page URL or query). A cursor for another account, a changed filter set or a date outside the requested window is refused with 400 bad_cursor. Re-authorisation and property selection are re-checked on every request.

Response

OK

propertystring
fromstring date
tostring date
dimensionsstring[]
last_pulled_atstring date-time nullable

RFC 3339 timestamp of the most recent recorded pull attempt for this property, or null if never. It may record a failed attempt, so it does not prove the window is complete; it is not reported as zero. The raw database timestamp text is never exposed.

pulled_throughstring date nullable

Last day actually pulled for this property, or null.

countinteger

Rows in this response (not the total matching rows).

next_cursorstring nullable

Pass back as cursor for the next page. Null when the window is exhausted. Returned when either the row or serialized-byte bound was reached; the serialized body (envelope and cursor included) stays under the byte cap, and boundaries never skip a row. Changing source data between requests is not a fixed snapshot.

notestring

Coverage and interpretation note: what the rows are not (a complete Google total) and that they show no causality.

Changes

No recorded changes to this operation across all 1 revision of this API.