# Web Pages

## List Web Pages

> Web page metrics are the daily metrics of citations, clicks, impressions, and traffic for a specific web page.

```json
{"openapi":"3.0.1","info":{"title":"API V1","version":"v1"},"tags":[{"name":"Web Pages"}],"servers":[{"url":"https://api.airops.com","variables":{"defaultHost":{"default":"api.airops.com"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/public_api/brand_kits/{brand_kit_id}/web_pages/list":{"post":{"summary":"List Web Pages","description":"Web page metrics are the daily metrics of citations, clicks, impressions, and traffic for a specific web page.","tags":["Web Pages"],"operationId":"listBrandKitsWebPages","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"nullable":true,"type":"integer","description":"Unique identifier for the web page"},"web_page_id":{"nullable":true,"type":"integer","description":"Web page ID (same as id)"},"url":{"nullable":true,"type":"string","description":"Full URL of the web page"},"folder_name":{"nullable":true,"type":"string","description":"First path segment of the URL (folder/section)"},"primary_keyword":{"nullable":true,"type":"string","description":"Primary keyword associated with this page"},"citations_count":{"nullable":true,"type":"integer","description":"Number of citations this page received"},"citations_count_diff":{"nullable":true,"type":"number","description":"Percentage change in citations vs comparison period"},"citation_rate":{"nullable":true,"type":"number","description":"Ratio of citing answers to total answers with citations"},"citation_rate_diff":{"nullable":true,"type":"number","description":"Absolute change in citation rate vs comparison period"},"prompts_count":{"nullable":true,"type":"integer","description":"Number of unique prompts citing this page"},"prompts_count_diff":{"nullable":true,"type":"integer","description":"Change in prompts count vs comparison period"},"clicks":{"nullable":true,"type":"integer","description":"Google Search Console clicks"},"clicks_diff":{"nullable":true,"type":"number","description":"Percentage change in clicks vs comparison period"},"impressions":{"nullable":true,"type":"integer","description":"Google Search Console impressions"},"impressions_diff":{"nullable":true,"type":"number","description":"Percentage change in impressions vs comparison period"},"ctr":{"nullable":true,"type":"number","description":"Click-through rate (clicks/impressions)"},"ctr_diff":{"nullable":true,"type":"number","description":"Absolute change in CTR vs comparison period"},"position":{"nullable":true,"type":"number","description":"Average search position"},"position_diff":{"nullable":true,"type":"number","description":"Percentage change in position vs comparison period"},"traffic":{"nullable":true,"type":"integer","description":"GA4 active users"},"traffic_diff":{"nullable":true,"type":"number","description":"Percentage change in traffic vs comparison period"},"sessions":{"nullable":true,"type":"integer","description":"GA4 sessions count"},"sessions_diff":{"nullable":true,"type":"number","description":"GA4 Percentage change in sessions vs comparison period"},"engagement":{"nullable":true,"type":"integer","description":"GA4 engaged sessions"},"engagement_diff":{"nullable":true,"type":"number","description":"GA4Percentage change in engagement vs comparison period"},"average_session_engagement":{"nullable":true,"type":"number","description":"GA4 Average session duration in seconds"},"average_session_engagement_diff":{"nullable":true,"type":"number","description":"GA4 Percentage change in average session duration vs comparison period"}}}},"meta":{"type":"object","properties":{"page":{"type":"integer"},"per_page":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"},"data_availability":{"type":"object","description":"Information about data availability for the brand kit","properties":{"earliest_data_date":{"nullable":true,"type":"string","description":"Date of the first completed analysis (ISO 8601). Null if none exist."},"latest_data_date":{"nullable":true,"type":"string","description":"Date of the most recent completed analysis (ISO 8601). Null if none exist."},"requested_period_has_data":{"type":"boolean","description":"Whether any completed analyses exist within the requested date range"}}}}}},"required":["data","meta"]}}}},"400":{"description":"Bad request - invalid parameters, filters, or sort options"},"401":{"description":"Unauthorized - invalid or missing authentication token"},"404":{"description":"Not found - resource does not exist"},"412":{"description":"Precondition failed - AEO not configured for this brand kit"}},"parameters":[{"name":"brand_kit_id","in":"path","required":true,"schema":{"type":"integer"},"description":"The Brand Kit ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brand_kit_id":{"type":"integer","description":"ID of the brand kit to retrieve web page metrics for"},"smart_filter":{"type":"string","description":"Apply a predefined filter preset.\n\n**Available presets:**\n- **almost_page_one**: Pages ranking 10-20\n- **losing_clicks**: Pages losing clicks despite stable rankings\n- **rankings_slipping**: Pages declining in SERP\n- **losing_ai_visibility**: Pages losing AI citations\n- **citation_rate_decline**: Pages losing citation rate\n- **stale_pages**: Pages not updated in 6 months","enum":["almost_page_one","losing_clicks","rankings_slipping","losing_ai_visibility","citation_rate_decline","stale_pages"]},"start_date":{"type":"string","description":"Start date for analysis period (ISO 8601 format, defaults to 1 month ago)"},"end_date":{"type":"string","description":"End date for analysis period (ISO 8601 format, defaults to today)"},"filters":{"type":"array","description":"Filter results. Nested fields (e.g. `writing_rules.text`) filter within an included association and require that association in `includes`.\n\n**Available fields:**\n- **clicks** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by GSC clicks count\n- **impressions** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by GSC impressions count\n- **ctr** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by click-through rate\n- **position** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by average search position\n- **citations_count** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by citation count\n- **citation_rate** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by citation rate\n- **prompts_count** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by prompts count\n- **traffic** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by GA4 traffic\n- **sessions** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by GA4 sessions\n- **engagement** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by GA4 engaged sessions\n- **average_session_engagement** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by average session duration\n- **clicks_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by clicks change percentage\n- **impressions_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by impressions change percentage\n- **ctr_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by CTR change\n- **position_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by position change percentage\n- **citations_count_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by citations change percentage\n- **citation_rate_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by citation rate change\n- **prompts_count_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by prompts count change\n- **traffic_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by traffic change percentage\n- **sessions_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by sessions change percentage\n- **engagement_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by engagement change percentage\n- **average_session_engagement_diff** (EQ, NEQ, GT, LT, GEQ, LEQ): Filter by average session duration change\n- **url** (EQUALS, CONTAINS, STARTS_WITH, IN): Filter by page URL. Use CONTAINS for partial match.\n- **folder_name** (EQUALS, CONTAINS, STARTS_WITH, IN): Filter by folder/section name\n- **primary_keyword** (EQUALS, CONTAINS, STARTS_WITH, IN): Filter by primary keyword\n- **session_source** (EQUALS, CONTAINS, STARTS_WITH, IN): Filter by GA4 session source. Valid values: (direct), google, chatgpt.com, perplexity.ai, perplexity, reddit.com, gemini.google.com, youtube.com, linkedin, linkedin.com, lnkd.in, bing, claude.ai\n- **session_medium** (EQUALS, CONTAINS, STARTS_WITH, IN): Filter by GA4 session medium. Valid values: organic, cpc, email, social, direct, referral","items":{"type":"object","properties":{"field":{"type":"string","enum":["clicks","impressions","ctr","position","citations_count","citation_rate","prompts_count","traffic","sessions","engagement","average_session_engagement","clicks_diff","impressions_diff","ctr_diff","position_diff","citations_count_diff","citation_rate_diff","prompts_count_diff","traffic_diff","sessions_diff","engagement_diff","average_session_engagement_diff","url","folder_name","primary_keyword","session_source","session_medium"],"description":"Field to filter on. clicks: Filter by GSC clicks count; impressions: Filter by GSC impressions count; ctr: Filter by click-through rate; position: Filter by average search position; citations_count: Filter by citation count; citation_rate: Filter by citation rate; prompts_count: Filter by prompts count; traffic: Filter by GA4 traffic; sessions: Filter by GA4 sessions; engagement: Filter by GA4 engaged sessions; average_session_engagement: Filter by average session duration; clicks_diff: Filter by clicks change percentage; impressions_diff: Filter by impressions change percentage; ctr_diff: Filter by CTR change; position_diff: Filter by position change percentage; citations_count_diff: Filter by citations change percentage; citation_rate_diff: Filter by citation rate change; prompts_count_diff: Filter by prompts count change; traffic_diff: Filter by traffic change percentage; sessions_diff: Filter by sessions change percentage; engagement_diff: Filter by engagement change percentage; average_session_engagement_diff: Filter by average session duration change; url: Filter by page URL. Use CONTAINS for partial match.; folder_name: Filter by folder/section name; primary_keyword: Filter by primary keyword; session_source: Filter by GA4 session source. Valid values: (direct), google, chatgpt.com, perplexity.ai, perplexity, reddit.com, gemini.google.com, youtube.com, linkedin, linkedin.com, lnkd.in, bing, claude.ai; session_medium: Filter by GA4 session medium. Valid values: organic, cpc, email, social, direct, referral"},"operator":{"type":"string","enum":["EQ","NEQ","GT","LT","GEQ","LEQ","EQUALS","CONTAINS","STARTS_WITH","IN"],"description":"Filter operator.\n\n- **EQ/EQUALS**: Exact match\n- **NEQ**: Not equal\n- **GT/GEQ/LT/LEQ**: Numeric/date comparisons\n- **CONTAINS**: Partial text match\n- **STARTS_WITH**: Text prefix match\n- **IN**: Match any value in array"},"value":{"description":"Filter value (type depends on field and operator)"}},"required":["field","operator","value"]}},"fields":{"type":"array","description":"Select additional fields to return.\n\n**Optional fields:**\n- **id**: Unique identifier for the web page\n- **web_page_id**: Web page ID (same as id)\n- **url**: Full URL of the web page\n- **folder_name**: First path segment of the URL (folder/section)\n- **primary_keyword**: Primary keyword associated with this page\n- **citations_count**: Number of citations this page received\n- **citations_count_diff**: Percentage change in citations vs comparison period\n- **citation_rate**: Ratio of citing answers to total answers with citations\n- **citation_rate_diff**: Absolute change in citation rate vs comparison period\n- **prompts_count**: Number of unique prompts citing this page\n- **prompts_count_diff**: Change in prompts count vs comparison period\n- **clicks**: Google Search Console clicks\n- **clicks_diff**: Percentage change in clicks vs comparison period\n- **impressions**: Google Search Console impressions\n- **impressions_diff**: Percentage change in impressions vs comparison period\n- **ctr**: Click-through rate (clicks/impressions)\n- **ctr_diff**: Absolute change in CTR vs comparison period\n- **position**: Average search position\n- **position_diff**: Percentage change in position vs comparison period\n- **traffic**: GA4 active users\n- **traffic_diff**: Percentage change in traffic vs comparison period\n- **sessions**: GA4 sessions count\n- **sessions_diff**: GA4 Percentage change in sessions vs comparison period\n- **engagement**: GA4 engaged sessions\n- **engagement_diff**: GA4Percentage change in engagement vs comparison period\n- **average_session_engagement**: GA4 Average session duration in seconds\n- **average_session_engagement_diff**: GA4 Percentage change in average session duration vs comparison period","items":{"type":"string","enum":["id","web_page_id","url","folder_name","primary_keyword","citations_count","citations_count_diff","citation_rate","citation_rate_diff","prompts_count","prompts_count_diff","clicks","clicks_diff","impressions","impressions_diff","ctr","ctr_diff","position","position_diff","traffic","traffic_diff","sessions","sessions_diff","engagement","engagement_diff","average_session_engagement","average_session_engagement_diff"]}},"sort":{"type":"string","enum":["url","-url","folder_name","-folder_name","citations_count","-citations_count","citations_count_diff","-citations_count_diff","citation_rate","-citation_rate","citation_rate_diff","-citation_rate_diff","prompts_count","-prompts_count","prompts_count_diff","-prompts_count_diff","clicks","-clicks","clicks_diff","-clicks_diff","impressions","-impressions","impressions_diff","-impressions_diff","ctr","-ctr","ctr_diff","-ctr_diff","position","-position","position_diff","-position_diff","traffic","-traffic","traffic_diff","-traffic_diff","sessions","-sessions","sessions_diff","-sessions_diff","engagement","-engagement","engagement_diff","-engagement_diff","average_session_engagement","-average_session_engagement","average_session_engagement_diff","-average_session_engagement_diff"],"description":"Sort field. Prefix with - for descending.\n\n**Available sort fields:**\n- **url/-url**: Sort alphabetically by URL\n- **folder_name/-folder_name**: Sort alphabetically by folder name\n- **citations_count/-citations_count**: Sort by citation count\n- **citations_count_diff/-citations_count_diff**: Sort by citation change\n- **citation_rate/-citation_rate**: Sort by citation rate\n- **citation_rate_diff/-citation_rate_diff**: Sort by citation rate change\n- **prompts_count/-prompts_count**: Sort by prompts count\n- **prompts_count_diff/-prompts_count_diff**: Sort by prompts count change\n- **clicks/-clicks**: Sort by GSC clicks\n- **clicks_diff/-clicks_diff**: Sort by clicks change\n- **impressions/-impressions**: Sort by GSC impressions\n- **impressions_diff/-impressions_diff**: Sort by impressions change\n- **ctr/-ctr**: Sort by click-through rate\n- **ctr_diff/-ctr_diff**: Sort by CTR change\n- **position/-position**: Sort by search position\n- **position_diff/-position_diff**: Sort by position change\n- **traffic/-traffic**: Sort by GA4 traffic\n- **traffic_diff/-traffic_diff**: Sort by traffic change\n- **sessions/-sessions**: Sort by GA4 sessions\n- **sessions_diff/-sessions_diff**: Sort by sessions change\n- **engagement/-engagement**: Sort by GA4 engagement\n- **engagement_diff/-engagement_diff**: Sort by engagement change\n- **average_session_engagement/-average_session_engagement**: Sort by avg session duration\n- **average_session_engagement_diff/-average_session_engagement_diff**: Sort by avg session duration change","default":"-citations_count"},"page":{"type":"integer","default":1,"description":"Page number"},"per_page":{"type":"integer","default":25,"maximum":100,"description":"Items per page"}},"required":["brand_kit_id"]}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airops.com/api-reference/api-reference/brand-kits/web-pages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
