API · v1
Five read-only endpoints covering articles, sources, intelligence reports, and story clusters. Pull MENA coverage into your dashboards, slack-bots, or research pipelines. Members only — keys generated from /account.
Pass your key via x-api-key: nashra_v1_…. Keys are shown once at creation; if you lose one, revoke it and create a new key.
Rate limits per hour: Intel = 60, Founders = 600.
Every successful response includes quota headers so you can track usage without waiting for a 429:
x-ratelimit-limit: 60 x-ratelimit-remaining: 54 x-ratelimit-reset: 2026-05-27T15:00:00.000Z
Recent articles with optional filters. Query params: ?country=LB&category=politics&language=ar&hours=24&limit=30&page=1 (max hours=168, limit=100, page=20). Filters are silently dropped when invalid. image_url is the publisher OG image — present on ~75 % of articles, null otherwise.
curl -H "x-api-key: $NASHRA_KEY" \ "https://nashra.news/api/v1/articles?country=LB&hours=24&limit=10"
Response shape:
{
"api_version": "v1",
"window_hours": 24,
"page": 1,
"limit": 10,
"has_next": true,
"count": 10,
"items": [
{
"id": "...",
"headline": "...",
"snippet": "...",
"language": "ar",
"published_at": "2026-05-27T09:00:00Z",
"url": "https://publisher.example/article",
"image_url": "https://publisher.example/og.jpg",
"redirect_url": "https://nashra.news/r/...",
"source": { "slug": "annahar", "name": "An-Nahar", "country": "LB" }
}
]
}Returns the list of all active sources with country and language metadata. Useful for building pickers or tracking coverage.
curl -H "x-api-key: $NASHRA_KEY" \ "https://nashra.news/api/v1/sources"
Response shape:
{
"api_version": "v1",
"count": 49,
"sources": [
{
"slug": "annahar",
"name": "An-Nahar",
"country": "LB",
"language": "ar",
"default_category": "politics",
"scrape_method": "rss",
"last_success_at": "2026-05-27T10:00:00Z"
}
]
}Returns the latest intelligence report for a country (or region code: LEVT, GULF, MGRB, INTL).
curl -H "x-api-key: $NASHRA_KEY" \ "https://nashra.news/api/v1/intel/LB"
Response shape:
{
"api_version": "v1",
"country": "LB",
"period_start": "2026-04-25",
"period_end": "2026-05-02",
"title": "Lebanon — weekly intelligence",
"summary": "...",
"body": "...",
"citations": [{ "article_id": "...", "source": "...", "url": "...", "excerpt": "..." }],
"generated_at": "...",
"required_tier": "intel"
}Top trending multi-source clusters in a window. Optional query params: ?hours=24&limit=30&page=1 (max hours=168, limit=100, page=20).
Each item carries a pulse_24h object with {today, yesterday, delta} article counts — positive delta indicates accelerating coverage.source_count is the number of distinct outlets covering the story; article_count is the total article tally (≥ source_count when outlets publish follow-ups). The envelope includes has_next so paginators can stop without a separate count call.
curl -H "x-api-key: $NASHRA_KEY" \ "https://nashra.news/api/v1/clusters/trending?hours=24&limit=10&page=1"
Response shape:
{
"api_version": "v1",
"window_hours": 24,
"page": 1,
"limit": 10,
"has_next": true,
"count": 10,
"items": [
{
"cluster_id": "...",
"lead_headline": "...",
"lead_language": "ar",
"source_count": 4,
"article_count": 7,
"country_set": ["LB", "SY"],
"language_set": ["ar", "en"],
"window_end": "2026-05-02T08:00:00Z",
"pulse_24h": { "today": 7, "yesterday": 2, "delta": 5 },
"url": "https://nashra.news/cluster/..."
}
]
}Single-cluster detail with the full source list. Returns the same summary fields as the trending listing plus an articles array — one entry per source, with headline, snippet, language, and publisher URL.
curl -H "x-api-key: $NASHRA_KEY" \ "https://nashra.news/api/v1/clusters/<uuid>"
Response shape:
{
"api_version": "v1",
"cluster_id": "...",
"source_count": 4,
"article_count": 7,
"country_set": ["LB", "SY"],
"language_set": ["ar", "en"],
"window_start": "2026-05-01T18:00:00Z",
"window_end": "2026-05-02T08:00:00Z",
"is_auto": true,
"pulse_24h": { "today": 7, "yesterday": 2, "delta": 5 },
"url": "https://nashra.news/cluster/...",
"articles": [
{
"id": "...",
"headline": "...",
"snippet": "...",
"language": "ar",
"published_at": "2026-05-02T07:42:00Z",
"url": "https://publisher.example/article",
"image_url": "https://publisher.example/og.jpg",
"source": { "slug": "...", "name": "...", "country": "LB" }
}
]
}These endpoints return RSS 2.0 or JSON Feed 1.1 and require no API key. Drop any URL into your feed reader, or import the OPML bundle to subscribe to all Nashra feeds at once.
GET https://nashra.news/feed.xml # RSS 2.0 GET https://nashra.news/feed.json # JSON Feed 1.1 GET https://nashra.news/feeds.opml # OPML 2.0 bundle (all feeds below)
GET https://nashra.news/trending/feed.xml GET https://nashra.news/trending/feed.json
GET https://nashra.news/n/{COUNTRY}/feed.xml # e.g. /n/LB/feed.xml
GET https://nashra.news/n/{COUNTRY}/feed.jsonGET https://nashra.news/c/{CATEGORY}/feed.xml # e.g. /c/politics/feed.xml
GET https://nashra.news/c/{CATEGORY}/feed.jsonGET https://nashra.news/s/{SLUG}/feed.xml # e.g. /s/naharnet/feed.xml
GET https://nashra.news/s/{SLUG}/feed.jsonSource slugs are available from GET /api/v1/sources. Country codes are ISO-3166 alpha-2 (uppercase); the full list is at /sources. Category codes: politics, economy, security,society, culture, tech,environment, opinion.
The /v1/ prefix is stable. Breaking changes will land under /v2/; deprecation notices go out via email at least 90 days before retirement.