Obține programul de proiecții pentru un film
GET / întoarce cinematografele care proiectează un film într-o țară, fiecare cu o listă de proiecții. country este un cod de 2 litere. Fără el, results rămâne gol și primești doar totaluri pe țări. Acoperirea variază după țară și titlu, iar un array results gol înseamnă că nu se știe nimic pentru perechea respectivă.
Primești numele cinematografului, lanțul, adresa și fusul orar, iar pentru fiecare proiecție ora de început, sala, formatele, etichetele și un link de rezervare, unde se știu. Se întorc doar proiecțiile de azi încolo. Răspunsul descrie proiecții. Nu este un serviciu de vânzare de bilete.
Ce date primești
| Endpoint | Întoarce |
|---|---|
GET / | Cinematografele și proiecțiile unui film în country, sau totaluri pe țări fără el |
GET / | Filmele aflate acum în cinematografe, restrânse prin region |
GET / cu append_ | Detalii plus program de proiecții într-o singură cerere, vezi programe de proiecții |
Câmpurile din răspunsul cu proiecții:
| Câmp | Tip | Semnificație |
|---|---|---|
id | număr întreg | ID-ul filmului |
country | șir sau null | Codul de 2 litere cerut, null dacă niciunul nu a fost valid |
results | array | Un element pe cinematograf, gol când nu se știe nimic sau lipsește country |
countries | array | Totaluri pe țări: country, name, venues, cities, showtimes, first_day, last_day |
results[].id, name, city, address | număr întreg, șiruri | ID-ul, numele, orașul și adresa stradală ale cinematografului |
results[].chain | obiect sau null | key și name ale lanțului de cinematografe |
results[].timezone | șir sau null | Zona IANA a cinematografului, de exemplu Europe/Moscow |
results[].latitude, longitude | număr sau null | Poziția, când se știe |
results[].region, postal_code, phone, url | șir sau null | Alte detalii despre cinematograf, adesea null |
results[].showtimes | array | Proiecțiile de la acel cinematograf |
showtimes[].date | șir | Ziua locală, precum 2026-10-18 |
showtimes[].start | șir | Ora locală de început, precum 2026-10-18T21:40, fără decalaj |
showtimes[].auditorium | șir sau null | Numele sau numărul sălii |
showtimes[].formats | array | Formatele proiecției, de exemplu 2D, IMAX sau Dolby Atmos |
showtimes[].tags | array | Etichete suplimentare, precum Reserved Seating |
showtimes[].booking_ | șir sau null | Link pentru cumpărarea unui bilet, când se știe |
showtimes[].sold_out | boolean | true când sursa marchează proiecția ca epuizată |
showtimes[].end, audio, subtitles, language, price, currency, prices | diverse, adesea null | Completate doar când sursa cinematografului le oferă |
Un răspuns conține cel mult 1,500 de proiecții, ordonate după cinematograf și apoi după ora de început.
Începe în 3 pași
- Deschide prețuri și alege un plan. Programul de proiecții este inclus în fiecare plan.
- Creează o cheie în panoul contului tău.
- Cere
/cu un cod3/ movie/ {movie_ id}/ showtimes countryși transmite cheia înapi_keysau într-un antet Bearer.
Exemplu de cerere
Exemplul bash citește programul pentru Fight Club (ID 550) în Rusia, unde amodb are proiecții pentru el azi. Exemplul JS ia primele cinci filme din lista rusă now_playing și afișează până la trei proiecții pe cinematograf sau o notă când nu se știe nicio proiecție.
curl -s "https://api.amodb.dev/3/movie/550/showtimes?country=RU" \
-H "Authorization: Bearer $AMODB_KEY"const BASE = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };
async function get(path, params = {}) {
const res = await fetch(`${BASE}${path}?${new URLSearchParams(params)}`, { headers });
if (!res.ok) throw new Error(`amodb returned ${res.status} for ${path}`);
return res.json();
}
const country = 'RU';
const playing = await get('/movie/now_playing', { region: country, page: 1 });
for (const movie of playing.results.slice(0, 5)) {
const { results } = await get(`/movie/${movie.id}/showtimes`, { country });
if (results.length === 0) {
console.log(`${movie.title}: no showtimes known`);
continue;
}
for (const cinema of results) {
const times = cinema.showtimes
.slice(0, 3)
.map((s) => `${s.start.slice(5, 10)} ${s.start.slice(11, 16)} ${s.formats.join('/')}`)
.join(', ');
console.log(`${movie.title} at ${cinema.name}, ${cinema.city}: ${times}`);
}
}Răspuns scurtat pentru country=RU: primul cinematograf, cu 2 dintre proiecțiile sale.
{
"id": 550,
"country": "RU",
"results": [
{
"id": 1114,
"name": "Мираж Синема НА БОЛЬШОМ",
"chain": {
"key": "mirage-ru",
"name": "Мираж Синема"
},
"city": "Санкт-Петербург",
"region": null,
"address": "Большой пр. П.С., д. 35А",
"postal_code": null,
"country": "RU",
"timezone": "Europe/Moscow",
"latitude": null,
"longitude": null,
"phone": null,
"url": "https://www.mirage.ru/spb/cinema/1/",
"showtimes": [
{
"date": "2026-10-18",
"start": "2026-10-18T21:40",
"end": null,
"auditorium": null,
"formats": [
"2D"
],
"tags": [],
"audio": null,
"subtitles": null,
"language": null,
"price": null,
"currency": null,
"prices": null,
"booking_url": "https://www.mirage.ru/ticket_new/aca7b114-d587-4fc5-9df6-28568e8fa9b3/",
"sold_out": false
},
{
"date": "2026-10-19",
"start": "2026-10-19T22:20",
"end": null,
"auditorium": "Зал №4",
"formats": [
"2D"
],
"tags": [],
"audio": null,
"subtitles": null,
"language": null,
"price": null,
"currency": null,
"prices": null,
"booking_url": "https://www.mirage.ru/ticket_new/0c32e190-890a-4c81-a754-3300fefc4d5e/",
"sold_out": false
}
]
}
],
"countries": [
{
"country": "RU",
"name": "Russia",
"venues": 2,
"cities": 1,
"showtimes": 7,
"first_day": "2026-10-18",
"last_day": "2026-10-21"
}
]
}Acoperire și rezultate goale
Datele de cinema nu sunt disponibile pentru fiecare țară sau titlu. Proiectează-ți interfața ținând cont de asta.
| Situație | Ce vezi | Ce faci |
|---|---|---|
| Proiecții cunoscute | results are un element pe cinematograf | Arată lista |
| Nu se știe nimic pentru această țară și acest titlu | results este un array gol, countries listează unde există date | Arată o notă neutră, nu un tabel gol |
Nu s-a trimis country | results este gol, country este null, countries are totaluri | Lasă utilizatorul să aleagă din countries |
| ID de film necunoscut | 404 cu status_code 34 | Verifică ID-ul |
| Ai depășit limita | 429 cu status_code 25 | Așteaptă numărul de secunde din Retry-After |
Un array gol nu este o eroare și nu afirmă că filmul lipsește din cinematografe. Înseamnă că nu se cunosc date de proiecție. Vezi erori pentru formatul complet al corpului.
Construiește o pagină de program pentru lansările curente
Combină două endpoint-uri. Lista îți spune ce filme rulează acum, iar programul completează proiecțiile.
| Pas | Cerere | Observații |
|---|---|---|
| 1 | GET / | Până la 20 de filme pe pagină, în cache 30 de minute |
| 2 | GET / | Un apel pe film, în cache 30 de minute |
| 3 | Filtrează în codul tău | După city, formats sau tags |
O pagină de 20 de filme costă 21 de cereri. Un răspuns pentru o lansare mare poate avea câteva sute de kiloocteți, pentru că include până la 1,500 de proiecții. Pe planul de 20 de cereri pe minut asta înseamnă un minut întreg de buget, așa că adu datele într-un job de fundal și servește vizitatorii din copia ta stocată. Planurile de 40 și 120 de cereri pe minut încap în același job cu rezervă. Vezi limite de cereri pentru fereastră și antete, și tendințe și liste pentru celelalte endpoint-uri de liste.
Păstrează-ți copia proaspătă
Programul se schimbă de la o zi la alta, spre deosebire de detaliile unui film. Stochează fiecare răspuns împreună cu ID-ul filmului, țara și momentul preluării. Un TTL de la 30 de minute până la câteva ore merge pentru majoritatea paginilor de program, iar proiecțiile care au început deja pot fi ascunse comparând start cu ora curentă în timezone al cinematografului. Fiindcă start nu are decalaj, nu-l muta în fusul orar al vizitatorului.
Cum se compară
| Capacitate | Extragi date de pe site-urile cinematografelor | API de metadate fără program de proiecții | amodb |
|---|---|---|---|
| Configurare | Câte un scraper pentru fiecare site de cinema | Indisponibil | Un endpoint, o singură structură JSON |
| Legarea de un ID de film | Potrivești după textul titlului | Indisponibil | ID-ul filmului în cale |
| Acoperire | Ce poți extrage | Niciuna | Variază după țară și titlu, array gol când nu se știe |
| Formate și rezervare | Analizezi etichete și linkuri | Indisponibil | Câmpurile formats, tags și booking_url |
| Întreținere | Se strică când un site se schimbă | Niciuna | O singură structură JSON pentru fiecare țară |
Prețuri
Planurile plătite în avans durează 1, 3, 6, 12 sau 24 de luni, cu reduceri de 0, 10, 20, 30 sau 40 la sută pentru cele mai lungi. Nimic nu se reînnoiește automat. Planurile permit 20, 40 și 120 de cereri pe minut, iar fiecare include programul de proiecții alături de toate celelalte date. O pagină de program reîmprospătată la fiecare 30 de minute pentru câteva țări încape în ritmul cel mai mic. Nu există nivel gratuit. Alege un plan la prețuri.