Overview
Google Search Console data synced to V4MOS.AI, through the integration's own endpoints
The V4MOS.AI Google Search Console API gives you the raw search performance records (clicks, impressions, CTR and average position) of the Search Console properties connected to your organization, by day, country, device, page and query. Rows come as they were synced, with the warehouse column names (snake_case), so you can load them straight into your BI. All endpoints use the /v1/google-search-console prefix and the same authentication, pagination and response format.
Getting started
Base URL: https://data.v4mos.ai. Every call requires your API credentials and the organizationId — see Authentication.
- Connect Google Search Console in app.v4mos.ai (Connected accounts) and wait for the first sync.
- Call any endpoint below with your
organizationId, for exampleGET /v1/google-search-console/daily?organizationId=…. - Every row carries
integration_idandintegration_name: the connected property it came from. To read a single property, pass that value asintegrationId.
Available endpoints
- getDaily report
/v1/google-search-console/dailyOne row per property and day: clicks, impressions, CTR and average position. - getReport by country
/v1/google-search-console/countriesOne row per property, day and country: clicks, impressions, CTR and average position. - getReport by device
/v1/google-search-console/devicesOne row per property, day and device type: clicks, impressions, CTR and average position. - getReport by page
/v1/google-search-console/pagesOne row per property, day and page URL: clicks, impressions, CTR and average position. - getReport by query
/v1/google-search-console/queriesOne row per property, day and search query: clicks, impressions, CTR and average position.
Resources
| Endpoint | What one row is | dateFrom / dateTo filter |
|---|---|---|
GET /v1/google-search-console/daily | One row per property and day: clicks, impressions, CTR and average position. | date |
GET /v1/google-search-console/countries | One row per property, day and country: clicks, impressions, CTR and average position. | date |
GET /v1/google-search-console/devices | One row per property, day and device type: clicks, impressions, CTR and average position. | date |
GET /v1/google-search-console/pages | One row per property, day and page URL: clicks, impressions, CTR and average position. | date |
GET /v1/google-search-console/queries | One row per property, day and search query: clicks, impressions, CTR and average position. | date |
Search Console data arrives about 3 days late. When aggregating rows, recompute CTR as clicks ÷ impressions instead of averaging CTR.
Pagination and filters
page(default 1) andlimit(default 500, max 5000).meta.hasNextPagesays whether another page exists; rows come in a stable order, so walk the pages until it isfalse.dateFrom/dateTo(YYYY-MM-DD, inclusive) filter by the date column shown in the table above.integrationIdkeeps the rows of one connected property.- Answers are cached for 30 minutes and the data is synced once a day — see Data sync.
Response format
{
"data": [{ "...": "one object per row, with the columns listed on each endpoint" }],
"meta": {
"page": 1,
"limit": 500,
"hasNextPage": true,
"hasPreviousPage": false
}
}Decimal values and large counters (format: decimal and format: int64 fields in each endpoint's schema) arrive as text, for example "125.50", so no precision is lost. Convert them to a numeric type on your side.