{
    "version": "ujb.site-guide/v1",
    "site": "IMDb",
    "domain": "imdb.com",
    "category": "entertainment",
    "status": "limited",
    "status_label": "Intermittent",
    "success_rate_7d": 35,
    "checks_7d": 20,
    "last_checked_at": "2026-10-13T19:05:05Z",
    "last_ok_at": "2026-10-13T19:05:05Z",
    "page_types": [
        {
            "page_type": "Public pages",
            "page_kinds": [
                "page"
            ],
            "status": "limited",
            "success_rate_7d": 35,
            "checks_7d": 20,
            "endpoint": "/scrape",
            "params": {
                "js": true
            },
            "proxy": "default",
            "measured": true,
            "max_credits": 5,
            "learned_settings": null,
            "example_url": "https://www.imdb.com/title/tt0111161/",
            "playground": "https://ujeebu.com/playground?endpoint=scrape&url=https%3A%2F%2Fwww.imdb.com%2Ftitle%2Ftt0111161%2F&js=true&autosend=0&utm_source=site-guide",
            "recipes": [
                {
                    "page_kind": "page",
                    "label": "Public pages",
                    "validated_at": "2026-10-13T13:52:26Z",
                    "params": {
                        "js": true
                    },
                    "extract_rules": {
                        "creative_work": {
                            "type": "fn",
                            "fn": "const T = ['Movie', 'TVSeries', 'Book', 'MusicAlbum', 'Course', 'Recipe', 'Game', 'CreativeWorkSeries']; const n = [...document.querySelectorAll('script[type=\"application/ld+json\"]')].flatMap(s => { try { return [].concat(JSON.parse(s.textContent)).flatMap(x => x['@graph'] || [x]); } catch (e) { return []; } }).find(x => x && [].concat(x['@type']).some(t => T.includes(t))); if (!n) return null; const g = p => p.split('|').map(q => q.split('.').reduce((v, k) => v == null ? v : (Array.isArray(v) ? v[0] : v)?.[k], n)).find(v => v != null && v !== ''); const all = v => Array.isArray(v) ? v.map(all).filter(x => x != null).join(', ') : (v && typeof v === 'object' ? (v.name ?? v['@id'] ?? null) : (typeof v === 'string' ? v.replace('https://schema.org/', '').replace('http://schema.org/', '') : v ?? null)); const one = v => all(Array.isArray(v) ? v[0] : v); return { description: all(g('description')), duration: all(g('duration')), genre: all(g('genre')), image: one(g('image.url|image')), name: all(g('name')), published: all(g('datePublished')), rating: all(g('aggregateRating.ratingValue')) };"
                        },
                        "url": {
                            "selector": "link[rel=\"canonical\"]",
                            "type": "attr",
                            "attribute": "href"
                        }
                    },
                    "fields": {
                        "creative_work.description": "text",
                        "creative_work.duration": "text",
                        "creative_work.genre": "text",
                        "creative_work.image": "image URL",
                        "creative_work.name": "text",
                        "creative_work.published": "date",
                        "creative_work.rating": "number",
                        "url": "URL"
                    },
                    "validated_on": [
                        "https://www.imdb.com/title/tt0068646/",
                        "https://www.imdb.com/title/tt0468569/"
                    ],
                    "url_pattern": "https://www.imdb.com/title/{id}/",
                    "listing_template": null,
                    "pagination": null
                }
            ]
        }
    ],
    "guide_url": "https://ujeebu.com/scrape/imdb",
    "billing": "Only HTTP 200 and 404 responses are billed.",
    "auth": "Header ApiKey: <your key>",
    "api_base": "https://api.ujeebu.com",
    "how_to_use_recipes": "POST https://api.ujeebu.com/scrape with a JSON body: url, the params, and extract_rules; the response is {\"result\": {...}}."
}