In addition to viewing data in Report Builder and Dashboards, all of your Yext analytics data is available programmatically via the Analytics API. Use the API to create custom reports, pull activity logs, and build integrations with external tools.
Prerequisite: Accessing data via the Analytics API requires an API key. To get one, create an app in the Developer Console with permission to the Analytics endpoint.
Create Reports
Create a synchronous report
Synchronous reports return results immediately. Use them for smaller data sets where you want results in a single response.
To create a synchronous report, send the following request:
Endpoint
POST https://api.yext.com/v2/accounts/me/analytics/reports?api_key=API_KEY&v=YYYYMMDD
Header
Content-Type: application/json
Request body
{
"metrics": [
"ANSWERS_SEARCHES"
],
"dimensions": [
"DAYS"
],
"filters": {
"startDate": "2026-04-01",
"endDate": "2026-04-05"
}
}This example returns the number of searches run per day from April 1–5, 2026. A successful response looks like the following:
{
"meta": {
"uuid": "0179fc77-87bb-2196-4da3-da130e410cd8",
"errors": []
},
"response": {
"data": [
{
"ANSWERS_SEARCHES": 1282,
"day": "2026-04-01"
},
{
"ANSWERS_SEARCHES": 1178,
"day": "2026-04-02"
},
{
"ANSWERS_SEARCHES": 262,
"day": "2026-04-03"
},
{
"ANSWERS_SEARCHES": 256,
"day": "2026-04-04"
}
]
}
}
Create an asynchronous report
Asynchronous reports are recommended for large data sets. The process requires two API calls: one to tell Yext to generate the report and a second to retrieve the results.
To create an asynchronous report, add &async=true to the endpoint URL:
Endpoint
POST https://api.yext.com/v2/accounts/me/analytics/reports?api_key=API_KEY&v=YYYYMMDD&async=true
Header
Content-Type: application/json
Request body
{
"metrics": [
"ANSWERS_SEARCHES"
],
"dimensions": [
"DAYS"
],
"filters": {
"startDate": "2026-04-01",
"endDate": "2026-04-05"
}
}The response contains only a report ID rather than data:
{
"meta": {
"uuid": "6c524b78-9356-4f06-8966-4e08e84abf8b",
"errors": []
},
"response": {
"id": "5163607c-1386-4d82-989b-61e7f8340ff8"
}
}Use the report ID to check the status of the report:
Endpoint
GET https://api.yext.com/v2/accounts/me/analytics/standardreports/REPORT_ID?api_key=API_KEY&v=YYYYMMDD
When the report is ready, the response includes a URL to a CSV file with your results:
{
"meta": {
"uuid": "558c12d5-fff2-4634-a6ed-5c8ebcaca2a5",
"errors": []
},
"response": {
"status": "DONE",
"url": "https://yext.analytics.s3.amazonaws.com/api/async/current/reports/20261017_101800_5163607c-1386-4d82-989b-61e7f8340ff8_start-date_2026-04-01_end-date_2026-04-05.csv"
}
}In the event that the report has not yet been generated, the status returns as PENDING and the url field will be blank. Reports typically generate within a few seconds, though larger reports may take longer. Continue polling the endpoint until status equals DONE.
Common Report Examples
Searches for listings
This report returns searches across all Extended Network Publishers (SEARCHES), as well as Bing (BING_SEARCHES) and Google Listings Impressions (LISTINGS_IMPRESSIONS) metrics, broken down by week.
{
"metrics": [
"SEARCHES",
"BING_SEARCHES",
"LISTINGS_IMPRESSIONS"
],
"dimensions": [
"WEEKS"
],
"filters": {
"startDate": "2026-01-01",
"endDate": "2026-04-01"
}
}Listings views by entity
This report returns page views across all Extended Network Publishers (PROFILE_VIEWS), as well as Yelp (YELP_PAGE_VIEWS) and Google Listings Actions (LISTINGS_ACTIONS) broken down by entity and day.
{
"metrics": [
"PROFILE_VIEWS",
"YELP_PAGE_VIEWS",
"LISTINGS_ACTIONS"
],
"dimensions": [
"DAYS",
"ENTITY_IDS"
],
"filters": {
"startDate": "2026-04-01",
"endDate": "2026-04-15"
}
}Searches and clicks by search term
This report returns the number of searches (ANSWERS_SEARCHES) and clicks (ANSWERS_CLICKS) broken down by search term.
{
"metrics": [
"ANSWERS_SEARCHES",
"ANSWERS_CLICKS"
],
"dimensions": [
"ANSWERS_SEARCH_TERM"
],
"filters": {
"startDate": "2026-04-01",
"endDate": "2026-04-15"
}
}Use the Analytics API Catalog
The Analytics API Catalog endpoint returns metadata about the metrics available to your account via the Analytics API, including each metric's ID and completed date. Use it to understand what you can query and when complete data is available.
Note: Only standard metrics are supported via the Analytics API Catalog. Custom metrics available in Report Builder are not supported.
To call the Catalog endpoint:
Endpoint
GET https://api.yextapis.com/v2/accounts/me/analytics/catalog?api_key=YOUR_API_KEY&v=YYYYMMDD
The metrics returned depend on the products you have access to in the platform. A sample response looks like the following:
{
"meta": {
"uuid": "88968fc0-ef3d-44c8-8a50-a3dadd059334",
"errors": []
},
"response": {
"metrics": [
{
"id": "BING_SEARCHES",
"completedDate": "2026-03-14"
},
{
"id": "FACEBOOK_POST_IMPRESSIONS",
"completedDate": "2026-03-22"
},
{
"id": "LISTINGS_IMPRESSIONS",
"completedDate": "2026-03-24"
}
]
}
}Each metric returned includes its API ID and the date through which complete data is available.
Query only complete data
To ensure you're working with stable, validated data, query the Catalog first to get the completed date for each metric, then use that date as the end date in your Analytics API request.
For example, to return the most complete data available for LISTINGS_IMPRESSIONS:
- Call the Catalog endpoint to retrieve the completed date for
LISTINGS_IMPRESSIONS. Based on the sample response above, complete data is available through 2026-03-24. - Use that date as the
endDatein your Analytics API request:
Endpoint
GET https://api.yextapis.com/v2/accounts/me/analytics/reports?api_key=YOUR_API_KEY&v=YYYYMMDD
Request body
{
"metrics": [
"LISTINGS_IMPRESSIONS"
],
"dimensions": [
"DAYS"
],
"filters": {
"startDate": "2026-03-20",
"endDate": "2026-03-24"
}
}Query incomplete data
In some cases — for example, when building a partner integration that displays near-real-time data — you may want to query data beyond the completed date. To do this:
- Query all complete data using the method above and save the completed date for each metric.
- On subsequent runs, query only dates after the saved completed date to retrieve any data that may have changed.
For example, after querying complete data for LISTINGS_IMPRESSIONS through 2026-03-24, query incomplete data starting from 2026-03-25:
Request body
{
"metrics": [
"LISTINGS_IMPRESSIONS"
],
"dimensions": [
"DAYS"
],
"filters": {
"startDate": "2026-03-25",
"endDate": "2026-03-29"
}
}If no incomplete data is available for a requested date range, the API returns no data for those days.