Tagesschau API
Free German news API with no key: the ARD Tagesschau homepage as structured JSON, with headlines, teaser images in every crop and regional tagging. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Tagesschau API?
Tagesschau, Germany's main public-service news programme, publishes its homepage as structured JSON at an open endpoint with no API key. Each item carries the headline, publication timestamp, teaser image in a full set of crops, topic and region tags, and a link to the full article.
A public broadcaster serving its newsroom output as clean JSON, free and unauthenticated, is rarer than it should be. There is no key, no quota form and no commercial tier — the same feed that drives the Tagesschau apps is simply open, which makes it one of the better sources for anyone building German-language news tooling.
The `teaserImage.imageVariants` object is the detail that saves the most work. Rather than one image URL you get a full matrix of crops and sizes — 1x1, 16x9 and portrait ratios at several widths each — so a responsive layout can pick the right asset with no server-side image processing at all. The other thing to plan for is language: every field value, including the `type` and `ressort` strings you might want to switch on, is German. There is no English edition behind this endpoint.
Quick facts
- Base URL
https://www.tagesschau.de/api2u- Authentication
- No API key and no registration. The endpoint is catalogued in the German government's open API directory.
- Rate limit
- No published limit. The homepage updates continuously; polling every few minutes is ample.
- Pricing
- Free. Content remains copyright ARD — check their terms before republishing text or images.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Tagesschau API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the current Tagesschau homepage
GET https://www.tagesschau.de/api2u/homepage
curl 'https://www.tagesschau.de/api2u/homepage'const res = await fetch("https://www.tagesschau.de/api2u/homepage");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.tagesschau.de/api2u/homepage", timeout=20)
res.raise_for_status()
print(res.json()){
"news": [
{
"sophoraId": "geheimes-waffendepot-100",
"externalId": "a02ca92e-4883-4620-a8da-9a6db02d22ff",
"title": "Geheimes Waffendepot bei Berlin entdeckt",
"date": "2026-08-21T10:00:22.026+02:00",
"teaserImage": {
"copyright": "dpa",
"alttext": "Eine Fahne weht vor dem Bundesamt für Verfassungsschutz in Köln.",
"imageVariants": {
"1x1-144": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSStQvU/1x1-144.jpg",
"1x1-256": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSStSJ8/1x1-256.jpg",
"1x1-432": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSStTkw/1x1-432.jpg",
"1x1-640": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSStU_E/1x1-640.jpg",
"1x1-840": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSStWZo/1x1-840.jpg",
"16x9-256": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSSvh0M/16x9-256.jpg",
"16x9-384": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSSvjXw/16x9-384.jpg",
"16x9-512": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSSvlIQ/16x9-512.jpg",
"16x9-640": "https://images.tagesschau.de/image/ffe2caf5-6448-49d0-bc5a-791ccf27d6e3/AAABoB9WA28/AAABnSSvmjA/16x9-640.jpg",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(none) | n/a | Optional | The homepage endpoint takes no required parameters. |
regions | query | Optional | Comma-separated numeric region ids to filter regional coverage, on the sibling `/news` endpoint. 1,2 |
ressort | query | Optional | Section filter on `/news`, such as `wirtschaft` or `sport`. Values are German. wirtschaft |
Response fields
newsarray- Current national stories, newest first.
news[].title / topline / firstSentencestring- Headline, the kicker line above it, and the opening sentence — enough for a card without fetching the article.
news[].datestring- ISO 8601 timestamp with a German timezone offset, not UTC. Normalise before sorting across sources.
news[].teaserImage.imageVariantsobject- Every crop and width of the teaser image, keyed like `16x9-1280`. Pick the ratio and size your layout needs.
news[].details / detailsweb / shareURLstring- API URL for the full article, the web URL, and the canonical share link.
news[].ressortstring- Section the story belongs to, in German — `inland`, `ausland`, `wirtschaft` and so on.
news[].tags / geotagsarray- Topic keywords and geographic tags attached by the newsroom.
news[].breakingNewsboolean- True for stories flagged as breaking.
news[].typestring- Item type — `story`, `video` or `webview` — which determines which other fields are populated.
regionalarray- Regional stories in the same shape as `news`.
What you can build with the Tagesschau API
- Build a German news dashboard or ticker
- Feed a German-language NLP or summarisation pipeline with fresh text
- Track which topics a public broadcaster leads with over time
- Drive a responsive news card grid using the pre-cut image variants
Common errors and how to fix them
301 redirect
A trailing slash was added to the path.
Fix: Request `/api2u/homepage` without a trailing slash to skip the redirect hop.
Missing fields on some items
`type` varies — video and webview items do not carry the same fields as stories.
Fix: Branch on `type` before reading `content`, `video` or `firstSentence`.
Timestamps sort incorrectly
Dates carry a German offset such as +02:00, not UTC.
Fix: Parse to a real datetime and normalise to UTC before comparing against other sources.
Empty regional array
Regional content is filtered by region id on the `/news` endpoint.
Fix: The homepage carries a general selection. Use `/news?regions=` for a specific Bundesland.
Tagesschau API — frequently asked questions
Is the Tagesschau API free?
Yes, free with no key and no registration, and it is catalogued in the German government's open API directory. The articles and images remain ARD copyright, so republishing is a separate question from access.
Is there an English version?
No. Every field value — headlines, section names, item types — is German. Tagesschau publishes some English content on its website, but not through this endpoint.
How do I pick the right image size?
`teaserImage.imageVariants` gives you every crop and width already rendered, keyed by ratio and pixel width. Choose the key matching your layout instead of resizing anything yourself.
How often does the data change?
Continuously through the day, at the pace of a rolling newsroom. Polling every few minutes keeps you current; anything tighter is wasted.
Tools that pair with this API
RSS Feed Generator
Build a valid RSS 2.0 XML feed from channel details and item rows with title, link, description and pubDate. Copy or download the ready-to-publish feed.
Strip HTML Tags
Remove all HTML tags and convert markup to clean plain text. Decode HTML entities and keep line breaks for block elements like paragraphs and headings.
Extractive Text Summarizer
Summarise long text by picking out its most significant sentences using Luhn's classic algorithm. Statistical only, and it runs in your browser.
Google News Sitemap Generator
Build a valid Google News XML sitemap from a pasted list of articles, with publication name, language, W3C publication dates and the 1,000-URL limit checked.
Tagesschau is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.