---
title: "Search Console clicks, impressions, CTR and position"
method: GET
path: "/projects/{project_id}/google-connections/{connection_id}/search-console-report"
tags: ["Google"]
---

# Search Console clicks, impressions, CTR and position

`GET /projects/{project_id}/google-connections/{connection_id}/search-console-report`

## Request

- Base URL: `https://adslighthouse.com/api/v1`
- URL: `https://adslighthouse.com/api/v1/projects/{project_id}/google-connections/{connection_id}/search-console-report`
- Auth: HTTP bearer

Fetches Search Console performance for one property and up to 31 days (from and to included), by date, query, page, country and device. Use clicks, impressions and CTR to assess organic Google Search visibility and find queries or pages to investigate. This is organic performance, separate from paid ads and the Google Ads report. ctr = clicks / impressions (0 to 1); position is Google's average position, so read it with clicks and impressions rather than as a fixed rank. Search Console returns top rows and may omit some data even when a request succeeds. Page with start_row (next_start_row). Reads Google's data live with the connection of the person the credential acts for; nothing is saved and it uses no check allowance. Connecting or reconnecting needs Google sign-in in the app (Settings > Connections).

## Path parameters

- `project_id` string, required: The project: its id, its brand domain (for example nike.example) or its exact project or brand name. Unknown or ambiguous references return not_found; call list_projects then.
- `connection_id` string, required: The connection id from list_google_connections.

## Query parameters

- `site_url` string, required: Property from list_google_accounts, such as https://example.com/ or sc-domain:example.com.
- `from` string, required: First day, YYYY-MM-DD.
- `to` string, required: Last day, YYYY-MM-DD, at most 30 days after from.
- `start_row` integer
- `row_limit` integer

## Response `200`

Search Console clicks, impressions, CTR and position

- object
  - `rows` object[], required
    - `date` string, required
    - `query` string, required
    - `page` string, required
    - `country` string, required
    - `device` string, required
    - `clicks` number, required
    - `impressions` number, required
    - `ctr` number, required
    - `position` number, required
  - `next_start_row` integer, nullable, required
  - `fetched_at` string, required
  - `request_id` string

## Other responses

- `400`: Invalid parameters, cursor or body.
- `401`: Missing, invalid, expired or revoked credential.
- `403`: The credential lacks the write scope, the plan does not include the API, or the allowance is used up.
- `404`: Unknown project, keyword or run in this account.
- `409`: The idempotency key was already used for a different request.
- `429`: Rate limit reached. Retry after the Retry-After seconds.
- `503`: The requested service or file is temporarily unavailable.

---

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