Skip to main content
POST /api/v1/projects/{project}/reports/sources One row per cited domain, hostname, URL, category or page type, or per platform, country, topic, tag, prompt or time bucket. No dimensions gives one row of totals. Read the Reports API page first for the request shape, filter roles and the compare window.

Dimensions

page_sentiment and brand_on_page come from Surfacd’s page analysis of the cited URLs. They describe the page against one brand, the lens brand: the page_brand filter, or your primary brand when there is none.

Measures

Filters

  • Population fields as on the main page. The population is the same set of answers the Sources page uses.
  • Entity fields domain, hostname, url, category, page_type, page_sentiment and brand_on_page take in, not_in and contains on the label when their dimension is on the row. They select rows after ranking.
  • Page filters narrow which cited pages count before grouping and ranking, without changing the population. competitors_on_page (the number of other tracked brands named on the page) takes in or a comparison. page_type, category, brand_on_page and page_sentiment act as page filters when they are not on the row: page_type in ["listicle", "comparison"] keeps one row per domain that counts only those pages, which is what the page’s multi-select shows, and brand_on_page in ["gap"] is the Sources page’s gaps toggle.
  • analysed_pages, mentioning_pages and the brands_on_page block describe all of a row’s analysed pages: a brand_on_page, page_sentiment or competitors_on_page page filter does not narrow them, as on the Sources page. So with such a filter they cannot be used in order_by, a filter or top, nor with a compare window and a time dimension.
  • Lens: page_brand takes in with one brand UUID and removes no rows. It names the brand that page_sentiment, brand_on_page, competitors_on_page, mentioning_pages and the brands_on_page block describe.
"related": ["brands_on_page"] adds, per row, the tracked brands named on its analysed pages with the number of pages each appears on. The lens brand comes first, then most pages first. This is what draws the brand logos in the Sources table.

Dashboard

Citations KPI card

Source categories donut

Top sources

Sources overview

KPIs

Citations, answers citing, pages, domains and citations per answer, with trends.

Domain share over time

The top five domains by week. rank is per week, so the filter keeps each week’s top five.

Domain movers

Page type donut

Gap ratio KPI

How many cited pages name your brand, name only competitors, or name nobody you track.

Sources tables

Domains table with “Mentioned?” and brand logos

The Source Analysis domains table. mentioning_pages / analysed_pages is the “Mentioned?” column; brands_on_page draws the logos.
Add { "field": "page_brand", "op": "in", "values": ["COMPETITOR_UUID"] } to see the same table through a competitor’s eyes. Add a compare window for the previous-period deltas. Use offset for the next page.

Hostnames and URLs tables

Replace domain with hostname or url:

Page type and category filters

The multi-select above the table. Keep domain as the only dimension and filter page_type: one row per domain counting only its listicle and comparison pages.

Gaps only

Domains ranked by their pages that name at least one competitor and not you. Off the row, brand_on_page is a page filter, so the domains are ranked by their gap pages alone; competitors_on_page is the “minimum competitors” control.

Negative pages

The sentiment filter: domains ranked by their analysed pages that speak negatively about the lens brand.

Prompts citing a page

Open a URL and see which prompts cite it.

More examples

Domain share by platform

What the platforms read when they are negative about you

mentions_brand plus mention_sentiment make “answers negative about us” the population. answers prints how many that is.