News API reference
The Israeli press as structured JSON: stories by side, newsroom profiles, the daily brief, search, and people. Authenticate with `Authorization: Bearer nk_live_…`. Keys carry scopes: stories, sources, brief, search, people.
Base URL https://news.itsbaba.com. A machine-readable copy lives at /api/v1/openapi.json. Request access.
GET /api/v1/stories
List stories
Parameters
- lang (query, optional). en | he. Output language. Hebrew falls back to English per field when a row is missing.
- state (query, optional). string. Cluster state. Unknown values are ignored.
- topic (query, optional). string. Desk id. Repeatable.
- source (query, optional). string. Newsroom key. Repeatable.
- since (query, optional). integer 0-30. Jerusalem calendar dates back, 0-30, today inclusive. Non-integer or negative values are 400; values above 30 are clamped to 30.
- limit (query, optional). integer 1-100. Page size. Non-integer or negative values are 400; values above 100 are clamped to 100 and echoed as page.limit.
- cursor (query, optional). string. Opaque keyset cursor from a previous page nextCursor. Malformed values are 400.
Example response
{
"data": [
{
"id": 44,
"url": "https://news.itsbaba.com/story/44/cabinet-approves",
"headline": "Cabinet approves the deal",
"summary": "Ministers voted after midnight.",
"topic": "politics",
"lang": "en",
"publishedAt": "2026-09-01T08:00:00.000Z",
"latestAt": "2026-09-01T08:00:00.000Z",
"outlets": 3,
"sides": {
"centre": 2,
"left": 1
},
"missingSides": [
"haredi"
],
"state": "consensus",
"verdict": null,
"lean": {
"left": 1,
"center": 2,
"right": 0,
"unrated": 0
},
"sources": [
"ynet",
"kan",
"haaretz_he"
],
"thread": null
}
],
"nextCursor": null,
"lang": "en",
"generatedAt": "2026-09-04T12:00:00.000Z",
"limit": 40
}GET /api/v1/stories/{ckey}
Story detail: members, timeline, framing
Parameters
- ckey (path, required). integer
- lang (query, optional). en | he. Output language. Hebrew falls back to English per field when a row is missing.
Example response
{
"id": 44,
"url": "https://news.itsbaba.com/story/44/cabinet-approves",
"headline": "Cabinet approves the deal",
"summary": "Ministers voted after midnight.",
"topic": "politics",
"lang": "en",
"publishedAt": "2026-09-01T08:00:00.000Z",
"latestAt": "2026-09-01T08:00:00.000Z",
"outlets": 0,
"sides": {
"centre": 2,
"left": 1
},
"missingSides": [
"haredi"
],
"state": "consensus",
"verdict": null,
"lean": {
"left": 1,
"center": 2,
"right": 0,
"unrated": 0
},
"sources": [
"ynet",
"kan",
"haaretz_he"
],
"thread": null,
"members": [],
"timeline": null,
"framingNote": null
}GET /api/v1/sources
List newsrooms
Parameters
- lang (query, optional). en | he. Output language. Hebrew falls back to English per field when a row is missing.
Example response
{
"data": [
{
"key": "ynet",
"name": "Ynet",
"language": "he",
"side": "centre",
"lean": "center",
"place": "Rishon LeZion",
"profile": null
}
],
"nextCursor": null,
"lang": "en",
"generatedAt": "2026-09-04T12:00:00.000Z"
}GET /api/v1/sources/{key}
One newsroom, with profile when computed
Parameters
- key (path, required). string
GET /api/v1/brief
Today in Brief
Parameters
- lang (query, optional). en | he. Output language. Hebrew falls back to English per field when a row is missing.
Example response
{
"lang": "en",
"generatedAt": "2026-09-04T04:30:00.000Z",
"intro": "Overnight.",
"items": [
{
"storyUrl": "https://news.itsbaba.com/1/a-story",
"headline": "A story",
"text": "It happened."
}
]
}GET /api/v1/search
Search stories
Parameters
- q (query, required). string. 2-120 characters. Matches title, summary, and entities. Search lives on /search only.
- lang (query, optional). en | he. Output language. Hebrew falls back to English per field when a row is missing.
- state (query, optional). string. Cluster state. Unknown values are ignored.
- topic (query, optional). string. Desk id. Repeatable.
- source (query, optional). string. Newsroom key. Repeatable.
- since (query, optional). integer 0-30. Jerusalem calendar dates back, 0-30, today inclusive. Non-integer or negative values are 400; values above 30 are clamped to 30.
- limit (query, optional). integer 1-100. Page size. Non-integer or negative values are 400; values above 100 are clamped to 100 and echoed as page.limit.
- cursor (query, optional). string. Opaque keyset cursor from a previous page nextCursor. Malformed values are 400.
Example response
{
"data": [
{
"id": 44,
"url": "https://news.itsbaba.com/story/44/cabinet-approves",
"headline": "Cabinet approves the deal",
"summary": "Ministers voted after midnight.",
"topic": "politics",
"lang": "en",
"publishedAt": "2026-09-01T08:00:00.000Z",
"latestAt": "2026-09-01T08:00:00.000Z",
"outlets": 3,
"sides": {
"centre": 2,
"left": 1
},
"missingSides": [
"haredi"
],
"state": "consensus",
"verdict": null,
"lean": {
"left": 1,
"center": 2,
"right": 0,
"unrated": 0
},
"sources": [
"ynet",
"kan",
"haaretz_he"
],
"thread": null
}
],
"nextCursor": null,
"lang": "en",
"generatedAt": "2026-09-04T12:00:00.000Z",
"limit": 40
}GET /api/v1/people
People in the last 24 hours
Parameters
- lang (query, optional). en | he. Output language. Hebrew falls back to English per field when a row is missing.
Example response
{
"data": [
{
"name": "A person",
"canonicalName": null,
"role": null,
"avatarUrl": null,
"mentions": 4
}
],
"nextCursor": null,
"lang": "en",
"generatedAt": "2026-09-04T12:00:00.000Z"
}GET /api/v1/openapi.json
This OpenAPI document