Shoof Aflam API
Shoof Aflam publishes a free, key-free API over 14,900+ Arabic movies and series with per-platform streaming availability, ratings and posters, as static JSON. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Shoof Aflam API?
Shoof Aflam is a free, key-free API covering more than 14,900 Arabic movies and series, with bilingual titles, genre, year, ratings and the streaming platforms each title is available on. It is served as static JSON files split by first letter, with a stats endpoint reporting catalogue size and freshness.
Arabic-language streaming metadata is badly served by the usual providers, and availability data — which of Watch It, Shahid, Viu, OSN or a broadcaster's own service actually carries a title — is normally a paid product in any language. This project publishes both for free, covering 10,800 films and 4,000 series with a `platforms` array on each record. For anyone building for an Arabic-speaking audience, that combination is hard to find elsewhere at any price.
The delivery model is static files, which shapes how you use it. Titles are sharded by first letter at `/api/search/{letter}.json`, so a search means fetching the shard and filtering locally rather than querying a server. There is a `/api/stats.json` endpoint that reports totals and a `last_updated` date — check it, because a static catalogue refreshes only when the maintainer regenerates it, and the honest way to present availability data is with the date it was gathered. Note also that `titles_with_platforms` is well below the total: most records have no availability data at all, so guard for an empty or missing `platforms` array. No CORS header is sent, so browser calls need a proxy.
Quick facts
- Base URL
https://shoofaflam.tv/api- Authentication
- No key or account.
- Rate limit
- None — these are static files. Fetch a shard once and cache it.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Shoof Aflam 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 every title beginning with A
GET https://shoofaflam.tv/api/search/a.json
curl 'https://shoofaflam.tv/api/search/a.json'const res = await fetch("https://shoofaflam.tv/api/search/a.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://shoofaflam.tv/api/search/a.json", timeout=20)
res.raise_for_status()
print(res.json())[
{
"slug": "ali-klay",
"title_ar": "علي كلاي",
"title_en": "Ali Klay",
"year": 2026,
"type": "series",
"rating": 7.2,
"platforms": [
"watchit",
"dmc",
"viu"
],
"genre": "action",
"poster_path": "/1rv82gNj4IisQPiaRD2a6J7Fg4t.jpg",
"vote_average": 8.5
},
{
"slug": "awlad-el-raaey",
"title_ar": "أولاد الراعي",
"title_en": "Awlad El-Raaey",
"year": 2026,
"type": "series",
"rating": 7,
"platforms": [
"watchit",
"dmc",
"cbc"
],
"genre": "drama",
"poster_path": "/biAvwA8P2h348GLYLMbykmiNOBI.jpg"
},
{
"slug": "ala-qad-el-hob",
"title_ar": "على قد الحب",
"title_en": "Ala Qad El-Hob",
"year": 2026,
"type": "series",
"rating": 7.4,
"platforms": [
"watchit",
"cbc"
],
"genre": "romance",
"poster_path": "/18DKi5YlMSSBKIHW0weReUidS87.jpg",
"vote_average": 7.0
},
{
"slug": "aard-w-talab",
"title_ar": "عرض وطلب",
"title_en": "Aard W Talab",
"year": 2026,
"type": "series",
"rating": 7,
"platforms": [
"watchit",
"on"
],
"genre": "drama",
"poster_path": "/4rF4z1AJJbiAd4FidLgpN2AcvQG.jpg",
"vote_average": 7.0
},
{
"slug": "ab-wa-laken",
"title_ar": "أب ولكن",
"title_en": "Ab Wa Laken",
"year": 2026,
"type": "series",
"rating": 7.1,
"platforms": [
"watchit",
"dmc",
"shahid"
],
"genre": "drama",
"poster_path": "/tMkSzkVDBLsk8DQ7FnDggY0XEDC.jpg",
"vote_average": 8.0
},
{
"slug": "as2. Fetch catalogue statistics
GET https://shoofaflam.tv/api/stats.json
curl 'https://shoofaflam.tv/api/stats.json'const res = await fetch("https://shoofaflam.tv/api/stats.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://shoofaflam.tv/api/stats.json", timeout=20)
res.raise_for_status()
print(res.json()){
"total_titles": 14912,
"total_movies": 10821,
"total_series": 4091,
"total_platforms": 18,
"titles_with_platforms": 3906,
"last_updated": "2026-03-08"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
letter | path segment | Required | First letter shard on `/api/search/{letter}.json`, lowercase. a |
titles.json | path | Optional | `/api/titles.json` returns the entire catalogue in one document. Large — prefer a shard unless you genuinely need everything. titles.json |
platforms.json | path | Optional | `/api/platforms.json` lists the 18 streaming services referenced in the `platforms` arrays. platforms.json |
stats.json | path | Optional | `/api/stats.json` returns catalogue totals and `last_updated`. Check it before trusting availability data. stats.json |
Response fields
[].slugstring- URL-safe identifier for the title on shoofaflam.tv.
[].title_ar / title_enstring- Arabic and transliterated English titles. Both are present on most records.
[].yearinteger- Release or broadcast year.
[].typestring- `movie` or `series`.
[].genrestring- A single genre label, not an array.
[].platformsarray of strings- Streaming services carrying the title, by short code. Frequently empty — only about a quarter of the catalogue has availability data.
[].rating / vote_averagefloat- Two separate score fields. `vote_average` is absent on some records, so do not assume both exist.
[].poster_pathstring- Relative poster path in the TMDB image-path format, to be prefixed with an image host.
What you can build with the Shoof Aflam API
- Build an Arabic film and series discovery site with 'where to watch' badges
- Check which platform carries a title before recommending it
- Analyse Arabic streaming catalogue overlap between services
- Seed a bilingual media database with both Arabic and Latin-script titles
- Practise client-side search over sharded static JSON
Common errors and how to fix them
404 on a letter shard
Only shards that exist are published.
Fix: Fetch `/api/stats.json` or the full `titles.json` to see what is covered rather than looping the alphabet blindly.
Empty `platforms` array
Most titles have no availability data.
Fix: `titles_with_platforms` in the stats response tells you the real coverage. Hide the availability UI when the array is empty instead of showing nothing.
CORS error in the browser
No `Access-Control-Allow-Origin` header is sent.
Fix: Proxy the fetch through your own server or edge function, or mirror the shards you need.
Stale data
The catalogue is static and refreshes when regenerated.
Fix: Read `last_updated` from `/api/stats.json` and show it next to any availability claim you display.
Shoof Aflam API — frequently asked questions
Is there a free Arabic movie and series API?
Shoof Aflam publishes over 14,900 Arabic titles with bilingual names, genres, ratings and streaming availability, free and with no key. It is served as static JSON files.
Does it show where a title is streaming?
For part of the catalogue, yes — each record carries a `platforms` array of service codes, resolvable through `/api/platforms.json`. Only around a quarter of titles have this data, so treat it as a bonus rather than a guarantee.
How do I search it?
Client-side. Titles are sharded by first letter at `/api/search/{letter}.json`, so you fetch the relevant shard and filter it in your own code. There is no query endpoint because there is no server-side query layer.
How current is the data?
Whatever `last_updated` in `/api/stats.json` says. It is a static export, so it is exactly as fresh as the last regeneration, and streaming availability in particular ages quickly.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
CSV Viewer & Table
View CSV as a clean HTML table online. Live search filter, row and column counts, delimiter and header options — all processed locally in your browser.
Shoof Aflam 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.