Discover
Authenticated feed and realtime endpoints for URL-level Google Discover intelligence.
The v2 feed is the fast, paginated stream of per-URL profiles — the consolidated data surface built around a single super-method, the discover_url_profile dossier per (url, country, language). Three endpoints cover it: /v2/feed for a filtered, windowed list, /v2/live for the freshest items only, and /v2/feed/{url_id} for every market profile of one URL. All three require an API key and are region-scoped to your key. Send the key in a header — X-API-Key: <key> or Authorization: Bearer <key>; there is no query-parameter auth.
#List the feed
/v2/feedAPI keyFiltered, region-scoped feed of full URL profiles. Filter by country, language, category and entity; window it with period (or a custom date_from/date_to range) and sort by any impressions window or timestamp. Returns a paginated envelope with items, total, and the echoed limit/offset.
countrystringoptional- ISO 3166-1 alpha-2 (e.g.
us,ru). Validated against your key's region scope; out-of-scope returns403. langstringoptional- ISO 639-1 language code (e.g.
en,ru). categorystringoptional- Google NL category. Multiple values are
;-separated. entitystringoptional- Knowledge Graph id (
/m/...) or normalized name. Multiple values are;-separated. matchstringoptionaldefaultany- How multiple categories/entities combine:
anyorall. periodstringoptional1h,24h,7d,30dorcustom. A non-custom period setsdate_from = now() - window. Omitting it defaults the sort toimpressions_24h.date_fromstringoptional- ISO 8601 lower bound. Used when
period=custom(or when no period is given). date_tostringoptional- ISO 8601 upper bound. Ignored (forced to null) for non-custom periods.
sort_bystringoptionaldefaultderived- One of
impressions_1h,impressions_24h,impressions_7d,impressions_30d,first_seen,last_seen,avg_position. An unknown value returns400. sort_orderstringoptionaldefaultdescascordesc.include_markdownbooloptionaldefaultfalse- Include the full article markdown (
markdown_content). Disables response caching. limitintoptionaldefault50- Page size, 1–200.
offsetintoptionaldefault0- Rows to skip; must be
>= 0.
curl "https://d2tr.com/api/v2/feed?country=us&lang=en&category=/Sports&period=24h&limit=2" \
-H "X-API-Key: $D2TR_API_KEY"{
"items": [
{
"url_id": "6f1c2e0a-8d5b-4a9e-9c2f-1a2b3c4d5e6f",
"url": "https://example.com/big-game-recap",
"domain": "example.com",
"favicon": "https://example.com/favicon.ico",
"country": "us",
"language": "en",
"title": "Big Game Recap: Late Comeback Stuns Fans",
"summary": "A fourth-quarter surge decided the match…",
"publisher": "Example Sports",
"first_seen": "2026-07-01T08:12:00+00:00",
"last_seen": "2026-07-01T14:03:00+00:00",
"lifespan": "05:51:00",
"avg_position": 3.4,
"impressions": {
"last_1h": { "current": 1200, "previous": 900, "delta_pct": 33.3 },
"last_24h": { "current": 48200, "previous": 41000, "delta_pct": 17.5 },
"last_7d": { "current": 210000,"previous": 180000, "delta_pct": 16.6 },
"last_30d": { "current": 210000,"previous": null, "delta_pct": null },
"breakdown": { "hourly_24h": [800, 1100, "…"], "daily_30d": [12000, "…"] }
},
"content_language": "en",
"content_language_fit": true,
"date_published": "2026-07-01T08:00:00+00:00",
"date_modified": "2026-07-01T13:40:00+00:00",
"article_meta": {
"meta_title": "Big Game Recap",
"meta_description": "Late comeback stuns fans.",
"headline": "Late Comeback Stuns Fans",
"section": "Sports"
},
"enrichment": {
"actors": ["Team A", "Team B"],
"topic": ["sports", "football"],
"format_group": "news",
"format_type": "recap",
"entities": { "people": ["…"], "orgs": ["…"] }
},
"categories": [{ "name": "/Sports", "confidence": 0.92 }],
"rss_feeds": null,
"trend": {
"trend_id": "b1a2c3d4-0000-1111-2222-333344445555",
"name": "Championship Final",
"semantic_type": "event_based",
"key_entities": ["Team A", "Team B"],
"key_topics": ["football"]
},
"entities": [{ "kg_id": "/m/02xyz", "name": "Team A", "type": "org" }],
"images": [
{
"source_url": "https://example.com/img/hero.jpg",
"width": 1200,
"height": 630,
"content_type": "image/jpeg",
"storage_urls": {
"original": "https://<supabase>/…/orig.jpg",
"w512": "https://<supabase>/…/w512.jpg",
"w256": "https://<supabase>/…/w256.jpg",
"w128": "https://<supabase>/…/w128.jpg",
"w64": "https://<supabase>/…/w64.jpg"
}
}
],
"markdown_content": null,
"refreshed_at": "2026-07-01T14:05:00+00:00"
}
],
"total": 137,
"limit": 2,
"offset": 0
}#Realtime: the live feed
/v2/liveAPI keyThe freshest materials only — items first seen within a recent window, always sorted first_seen descending. Same filters as /v2/feed, but the window is expressed as since_minutes and the sort is fixed (not caller-controllable). Ideal for polling for newly-surfaced URLs.
countrystringoptional- ISO alpha-2, region-scoped.
langstringoptional- ISO 639-1 language code.
categorystringoptional- Google NL category;
;-separated for multiple. entitystringoptional- Knowledge Graph id (
/m/...) or name;;-separated for multiple. matchstringoptionaldefaultanyanyorall.since_minutesintoptionaldefault60- How far back counts as "fresh", 5–1440.
include_markdownbooloptionaldefaultfalse- Include markdown; disables caching.
limitintoptionaldefault50- Page size, 1–200.
offsetintoptionaldefault0- Rows to skip; must be
>= 0.
curl "https://d2tr.com/api/v2/live?country=us&since_minutes=120&limit=1" \
-H "Authorization: Bearer $D2TR_API_KEY"{
"since": "2026-07-01T12:05:00+00:00",
"items": [
{
"url_id": "9a8b7c6d-1234-5678-9abc-def012345678",
"url": "https://news.example/breaking",
"title": "Breaking: …",
"country": "us",
"language": "en",
"first_seen": "2026-07-01T13:58:00+00:00",
"impressions": {
"last_1h": { "current": 340, "previous": null, "delta_pct": null },
"…": "…"
},
"…": "…"
}
],
"total": 12,
"limit": 1,
"offset": 0
}#One URL, every market
/v2/feed/{url_id}API keyEvery market (country/language) profile for a single URL. One URL can surface in several markets, each with its own metrics, so this returns a bare JSON array of feed items — no pagination wrapper. Restricted keys only see their in-scope markets.
url_idstringrequired- Path segment — the
urls.idUUID. include_markdownbooloptionaldefaulttrue- Query — include
markdown_content. Note this defaults totruehere, unlike/v2/feedand/v2/live.
curl "https://d2tr.com/api/v2/feed/6f1c2e0a-8d5b-4a9e-9c2f-1a2b3c4d5e6f?include_markdown=false" \
-H "X-API-Key: $D2TR_API_KEY"[
{
"url_id": "6f1c2e0a-8d5b-4a9e-9c2f-1a2b3c4d5e6f",
"country": "us",
"language": "en",
"title": "Big Game Recap: Late Comeback Stuns Fans",
"impressions": { "…": "…" },
"…": "…"
},
{
"url_id": "6f1c2e0a-8d5b-4a9e-9c2f-1a2b3c4d5e6f",
"country": "gb",
"language": "en",
"title": "Big Game Recap: Late Comeback Stuns Fans",
"impressions": { "…": "…" },
"…": "…"
}
]