Dataset reference
Every exportable dataset and every column in it — name, type, whether it can be empty, and what it means.
This page lists every dataset you can export and every column in it. The same
catalog is available from the API at GET /v1/organizations/{organizationId}/exports/catalog, and
cloud storage manifests carry it with every file.
Stability
Section titled “Stability”- Columns are only ever added — never renamed, removed or retyped.
- Adding a column raises the dataset’s schema version. Every webhook batch and storage manifest says which version it carries.
- In files, columns are always in the order listed here; new columns are added at the end.
- Nullable: no means the column always has a value. Every other column can be empty.
Every dataset starts with the same two columns:
row_id— unique within the dataset, and the same every time the row is exported. De-duplicate on it.measured_at— when the value was measured, in UTC. Warehouses partition on it.
Picking columns
Section titled “Picking columns”You don’t have to export every column. When you set up an export, Choose columns next to a
dataset lets you keep only the ones you need — say keyword, domain and position from
position_tracker.results. row_id and measured_at are always included, and picked columns keep
the order listed here. With a pick, columns a dataset gains later are not added until you pick
them. See choosing columns for what a pick means at each
destination.
Column types
Section titled “Column types”| Type | CSV | JSON Lines and webhooks | BigQuery |
|---|---|---|---|
string | Text | String | STRING |
integer | Number | Number | INT64 |
float | Number | Number | FLOAT64 |
boolean | true / false | true / false | BOOL |
timestamp | ISO-8601 in UTC, e.g. 2026-09-30T06:02:14.512Z | ISO-8601 string in UTC | TIMESTAMP |
json | JSON text | Object | JSON |
string_array | Values joined with | | Array of strings | STRING, mode REPEATED |
An empty value is an empty CSV cell, null in JSON, and NULL in BigQuery. How each type is
written in Excel, SQL and Parquet files is in file formats.
When rows are exported
Section titled “When rows are exported”Campaign datasets are exported with their run: a row joins an export once the campaign run that produced it has finished, together with the rest of that run. Search history and alerts are exported by the time they were created. See incremental delivery.
position_tracker.results
Section titled “position_tracker.results”Position tracker — rankings — Every ranking position found, per keyword and domain.
One row per ranking result recorded for a keyword in a Position tracker run. For the outcome of every keyword check, including failed ones, use position_tracker.checks.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
country | string | yes | Country code the search ran in. |
language | string | yes | Language code. |
device | string | yes | Device type. |
search_engine | string | yes | Search engine. |
city | string | yes | City, when the search was localised. |
keyword | string | no | Keyword searched. |
domain | string | no | Domain found. |
position | integer | yes | Organic position. |
page | integer | yes | Results page the position was on. |
url | string | yes | Ranking URL. |
title | string | yes | Result title. |
description | string | yes | Result snippet. |
position_tracker.checks
Section titled “position_tracker.checks”Position tracker — checks — One row per keyword check, including those that failed.
One row per keyword check in a Position tracker run, whether it succeeded or failed. Join to position_tracker.results on run_id and keyword.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
country | string | yes | Country code the search ran in. |
language | string | yes | Language code. |
device | string | yes | Device type. |
search_engine | string | yes | Search engine. |
city | string | yes | City, when the search was localised. |
keyword | string | no | Keyword checked. |
status | string | no | Check outcome. |
error_code | string | yes | Why the check failed, when it did. |
ad_tracker.ads
Section titled “ad_tracker.ads”Ad tracker — ads — Every paid ad seen, per keyword.
One row per paid ad seen for a keyword in an Ad tracker run.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
country | string | yes | Country code the search ran in. |
language | string | yes | Language code. |
device | string | yes | Device type. |
search_engine | string | yes | Search engine. |
city | string | yes | City, when the search was localised. |
keyword | string | no | Keyword searched. |
domain | string | no | Advertiser domain. |
position | integer | yes | Ad position. |
headline | string | yes | Ad headline. |
description | string | yes | Ad text. |
display_url | string | yes | URL shown in the ad. |
landing_url | string | yes | URL the ad links to. |
maps.results
Section titled “maps.results”Maps — local results — Every place ranked, per keyword and grid point.
One row per place ranked at each grid point of a Maps run.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
country | string | yes | Country code. |
language | string | yes | Language code. |
device | string | yes | Device type. |
keyword | string | no | Keyword searched. |
surface | string | yes | Where the result appeared. |
grid_row | integer | yes | Grid row of the search point. |
grid_col | integer | yes | Grid column of the search point. |
lat | float | yes | Latitude of the search point. |
lng | float | yes | Longitude of the search point. |
name | string | yes | Place name. |
position | integer | yes | Rank of the place. |
is_sponsored | boolean | yes | Whether the listing was an ad. |
ad_type | string | yes | Kind of ad, when sponsored. |
rating | float | yes | Star rating. |
review_count | integer | yes | Number of reviews. |
category | string | yes | Place category. |
address | string | yes | Place address. |
google_place_id | string | yes | Google place id. |
cid | string | yes | Google customer id of the listing. |
marketplace.results
Section titled “marketplace.results”Marketplace — product results — Every product listed, per keyword and marketplace.
One row per product listed for a keyword in a Marketplace run.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
country | string | yes | Country code. |
language | string | yes | Language code. |
keyword | string | no | Keyword searched. |
platform | string | yes | Marketplace platform. |
marketplace | string | yes | Marketplace site. |
type | string | yes | Organic or sponsored. |
placement | string | yes | Where on the page it appeared. |
section_position | integer | yes | Position within its section. |
global_position | integer | yes | Position on the whole page. |
title | string | yes | Product title. |
brand | string | yes | Product brand. |
seller | string | yes | Seller. |
product_external_id | string | yes | The marketplace’s own product id. |
product_url | string | yes | Product page URL. |
price | float | yes | Listed price. |
currency | string | yes | Price currency. |
rating | float | yes | Star rating. |
reviews_count | integer | yes | Number of reviews. |
is_tracked | boolean | yes | Whether it is one of your tracked products. |
ai_visibility.responses
Section titled “ai_visibility.responses”AI visibility — answers — One row per prompt answered, with how your brand fared.
One row per AI visibility check — one prompt asked on one platform — with how your own brand fared.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
prompt | string | no | Prompt asked. |
platform | string | no | AI platform answering. |
location | string | yes | Country the prompt was asked from. |
city | string | yes | City, when localised. |
own_brand_mentioned | boolean | yes | Whether your brand was mentioned. |
own_brand_mention_count | integer | yes | How often your brand was mentioned. |
own_brand_position | integer | yes | Rank of your brand among those named. |
own_brand_sentiment | float | yes | Sentiment toward your brand, -1 to 1. |
own_brand_recommended | boolean | yes | Whether your brand was recommended. |
own_brand_recommended_rank | integer | yes | Rank among the recommendations. |
own_brand_sponsored | boolean | yes | Whether your brand appeared in an ad. |
competitor_count | integer | yes | Competitors named in the answer. |
response_type | string | yes | Kind of answer. |
status | string | no | Check outcome. |
error_code | string | yes | Why the check failed, when it did. |
ai_visibility.mentions
Section titled “ai_visibility.mentions”AI visibility — brand mentions — Every brand named in an answer, yours and competitors.
One row per brand named in an AI answer — your own and competitors’. Several rows share one answer.
Schema version 1. Exported when the campaign run that produced the row finishes.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
run_id | string | no | The campaign run that produced the row. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
prompt | string | yes | Prompt asked. |
platform | string | yes | AI platform answering. |
location | string | yes | Country the prompt was asked from. |
domain | string | yes | Brand domain. |
name | string | yes | Brand name as written. |
count | integer | yes | Times mentioned. |
is_own | boolean | yes | Whether it is your brand. |
position | integer | yes | Rank among the brands named. |
sentiment | float | yes | Sentiment toward the brand, -1 to 1. |
recommended | boolean | yes | Whether it was recommended. |
recommended_rank | integer | yes | Rank among the recommendations. |
is_sponsored | boolean | yes | Whether the mention was an ad. |
ad_headline | string | yes | Ad headline, when sponsored. |
ad_description | string | yes | Ad text, when sponsored. |
attributes | string_array | yes | Qualities the answer attributed to the brand. |
snippet | string | yes | Excerpt of the answer around the mention. |
search_history
Section titled “search_history”Search history — Searches run with the Search Engine Proxy and Direct Search.
One row per search run with the Search Engine Proxy or Direct Search. Filter by search type or to saved searches only.
Schema version 1. Exported by the time the row was created.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
search_type | string | no | proxy or direct. |
project_id | string | yes | Project the search was filed under, if any. |
query | string | no | Search query. |
country | string | yes | Country code the search ran in. |
language | string | yes | Language code. |
device | string | yes | Device type. |
search_engine | string | yes | Search engine. |
city | string | yes | City, when the search was localised. |
google_domain | string | yes | Search engine domain used. |
status | string | yes | Outcome of the search. |
saved | boolean | yes | Whether the search was saved. |
page_count | integer | yes | Result pages fetched. |
search_history.results
Section titled “search_history.results”Search history — results — Every result on the pages fetched by Search Engine Proxy searches.
One row per result on the pages a Search Engine Proxy search fetched. Direct Search does not capture results. Filter to saved searches only.
Schema version 1. Exported by the time the row was created.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
search_id | string | no | The search the result belongs to. |
project_id | string | yes | Project the search was filed under, if any. |
query | string | no | Search query. |
country | string | yes | Country code. |
page_number | integer | yes | Results page. |
type | string | yes | Kind of result (organic, ad, …). |
section_position | integer | yes | Position within its section. |
global_position | integer | yes | Position on the whole page. |
title | string | yes | Result title. |
url | string | yes | Result URL. |
display_url | string | yes | URL as displayed. |
domain | string | yes | Result domain. |
alerts
Section titled “alerts”Campaign alerts — Alerts raised on your campaigns.
One row per alert raised on a campaign. Filter by tool, severity or campaign. You only receive alerts for tools you can read.
Schema version 1. Exported by the time the row was created.
| Column | Type | Nullable | Description |
|---|---|---|---|
row_id | string | no | Stable id of this row; unique within the dataset. |
measured_at | timestamp | no | When the value was measured, in UTC. |
tool | string | no | Tool the campaign belongs to. |
campaign_id | string | no | Campaign id. |
campaign_name | string | no | Campaign name at export time. |
project_id | string | yes | Project the campaign belongs to, if any. |
type | string | no | What the alert is about. |
severity | string | no | Alert severity. |
metadata | json | yes | Details of the alert. |