Product

Topic Engine Content Engine Code-to-Docs AEO Rank Research-Driven Content Autopilot Visibility Tracking Website & Migration Content Factory Pricing

Resources

Browse all resources → Case Studies Blog FAQ Use Cases Knowledge Base Research Docs

API Reference

Business Impact by Page

One row per landing page: search clicks, visits, leads, call to action clicks, applications and AI answer citations.

GET/api/v1/reports/business-impact/pages

Per page results for the window, sorted, as JSON or CSV. measured is false while per page leads and CTA clicks are still being collected for the window; note says how to read the columns, and citations_through is the last day the ai_citations column counts. Pages past the limit are still included when AI answers cite them.

Query Parameters

NameTypeRequiredDescription
domainstringOptionalThe domain to report on (e.g., "example.com"). Required when the key can read more than one domain; GET /api/v1/domains lists them.
daysnumberOptionalWindow length in days, up to 366. The window ends on the last day data was received.Default: 28
fromstringOptionalStart of a calendar window, YYYY-MM-DD (use with to instead of days)
tostringOptionalEnd of a calendar window, YYYY-MM-DD
sortstringOptionalorganic_sessions, sessions, ai_sessions, leads, cta_clicks, search_clicks, people_views, ai_citations, app_started or app_completed (e.g., "search_clicks")Default: organic_sessions
limitnumberOptionalRows to return, 1 to 1000Default: 100
formatstringOptionalSet to "csv" for CSV instead of JSON (e.g., "csv")

Code Examples

curl:

bash
curl "https:">//studio.aeocontent.ai/api/v1/reports/business-impact/pages?domain=example.com&days=28&sort=search_clicks&limit=50" \
  -H "Authorization: Bearer $AEO_API_KEY"

CSV:

bash
curl "https:">//studio.aeocontent.ai/api/v1/reports/business-impact/pages?domain=example.com&days=28&format=csv" \
  -H "Authorization: Bearer $AEO_API_KEY" \
  -o pages.csv

Try it

Response

note is abridged here: the full text also says that people_views and search_clicks are independent measurements, never to be summed with the GA4 session columns.

200Pages
json
{
  class="code-string">"data": {
    class="code-string">"domain": class="code-string">"example.com",
    class="code-string">"period": {
      class="code-string">"from": class="code-string">"2026-09-10",
      class="code-string">"to": class="code-string">"2026-10-07",
      class="code-string">"days": 28
    },
    class="code-string">"pages": [
      {
        class="code-string">"landing_page": class="code-string">"/pricing",
        class="code-string">"sessions": 640,
        class="code-string">"organic_sessions": 300,
        class="code-string">"ai_sessions": 22,
        class="code-string">"paid_sessions": 210,
        class="code-string">"leads": 14,
        class="code-string">"organic_leads": 9,
        class="code-string">"cta_clicks": 51,
        class="code-string">"organic_cta_clicks": 33,
        class="code-string">"people_views": 1890,
        class="code-string">"search_clicks": 412,
        class="code-string">"events": {
          class="code-string">"cta_request_demo": 12,
          class="code-string">"contact_us": 2
        },
        class="code-string">"organic_events": {
          class="code-string">"cta_request_demo": 9
        },
        class="code-string">"app_started": null,
        class="code-string">"app_completed": null,
        class="code-string">"ai_citations": 18,
        class="code-string">"cited_by": [
          class="code-string">"chatgpt",
          class="code-string">"perplexity"
        ]
      }
    ],
    class="code-string">"measured": true,
    class="code-string">"citations_through": class="code-string">"2026-10-10",
    class="code-string">"note": class="code-string">"GA4 sessions per page are stored for the top 300 landing page x channel rows per day; a page below that cut on a given day is not counted for that day. ai_citations counts recorded AI answers from 2026-09-10 through 2026-10-10 (scans land the same day) while the GA4 columns end at the last measured day."
  },
  class="code-string">"meta": {
    class="code-string">"request_id": class="code-string">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    class="code-string">"timestamp": class="code-string">"2026-10-10T12:00:00.000Z"
  }
}
409Google Analytics not connected
json
{
  class="code-string">"error": {
    class="code-string">"code": class="code-string">"not_connected",
    class="code-string">"message": class="code-string">"example.com has no Google Analytics property linked yet, so there is nothing to report. Ask your AEO Content contact to link it."
  }
}
403Domain below the Business plan
json
{
  class="code-string">"error": {
    class="code-string">"code": class="code-string">"plan_required",
    class="code-string">"message": class="code-string">"API access is included with the Business plan, and example.com is not on the Business plan or higher. Upgrade on the Billing page in Studio."
  }
}

Sent with a Retry-After header: the seconds until the next request is allowed.

429Rate limit exceeded
json
{
  class="code-string">"error": {
    class="code-string">"code": class="code-string">"rate_limit_exceeded",
    class="code-string">"message": class="code-string">"Rate limit exceeded. Limits: 60 requests a minute, 2000 a day."
  }
}
app_started and app_completed stay null until the client's application reports its milestones back.