{
    "version": "ujb.site-guide/v1",
    "site": "Yahoo News",
    "domain": "yahoo.com",
    "category": "news",
    "status": "working",
    "status_label": "Working",
    "success_rate_7d": 100,
    "checks_7d": 6,
    "last_checked_at": "2026-10-18T11:02:31Z",
    "last_ok_at": "2026-10-18T11:02:31Z",
    "page_types": [
        {
            "page_type": "Public pages",
            "page_kinds": [
                "detail"
            ],
            "status": "working",
            "success_rate_7d": 100,
            "checks_7d": 6,
            "endpoint": "/scrape",
            "params": {
                "js": true
            },
            "proxy": "default",
            "measured": true,
            "max_credits": 5,
            "learned_settings": null,
            "example_url": "https://www.yahoo.com/news/",
            "playground": "https://ujeebu.com/playground?endpoint=scrape&url=https%3A%2F%2Fwww.yahoo.com%2Fnews%2F&js=true&autosend=0&utm_source=site-guide",
            "recipes": [
                {
                    "page_kind": "listing",
                    "label": "Search and listing pages",
                    "validated_at": "2026-10-18T11:03:42Z",
                    "params": {
                        "js": true
                    },
                    "extract_rules": {
                        "articles": {
                            "selector": "article.group",
                            "type": "obj",
                            "multiple": true,
                            "children": {
                                "url": {
                                    "selector": "a.stretched-box",
                                    "type": "link"
                                },
                                "title": {
                                    "selector": "h3",
                                    "type": "text"
                                },
                                "image": {
                                    "selector": "img.object-cover",
                                    "type": "image"
                                }
                            }
                        }
                    },
                    "fields": {
                        "articles": "list of 3+ items",
                        "articles[].url": "URL",
                        "articles[].title": "text",
                        "articles[].image": "URL"
                    },
                    "validated_on": [
                        "https://www.yahoo.com/news/us/",
                        "https://www.yahoo.com/news/politics/"
                    ],
                    "url_pattern": "https://www.yahoo.com/news/{slug}/",
                    "listing_template": null,
                    "pagination": null
                },
                {
                    "page_kind": "detail",
                    "label": "Articles",
                    "validated_at": "2026-10-18T11:03:55Z",
                    "params": {
                        "js": true
                    },
                    "extract_rules": {
                        "article": {
                            "type": "fn",
                            "fn": "const T = ['NewsArticle', 'Article', 'BlogPosting', 'ReportageNews', 'AnalysisNewsArticle', 'TechArticle', 'ScholarlyArticle', 'LiveBlogPosting', 'OpinionNewsArticle', 'Report']; 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')), headline: all(g('headline|name')), image: one(g('image.url|image')), modified: all(g('dateModified')), published: all(g('datePublished')), publisher: all(g('publisher.name')), section: all(g('articleSection')) };"
                        }
                    },
                    "fields": {
                        "article.description": "text",
                        "article.headline": "text",
                        "article.image": "URL",
                        "article.modified": "date",
                        "article.published": "date",
                        "article.publisher": "text",
                        "article.section": "text"
                    },
                    "validated_on": [
                        "https://www.yahoo.com/news/politics/articles/democrats-embrace-incivility-100000285.html",
                        "https://www.yahoo.com/news/politics/articles/shapiro-launches-super-pac-presidential-023831728.html"
                    ],
                    "url_pattern": "https://www.yahoo.com/news/politics/articles/{slug}.html",
                    "listing_template": null,
                    "pagination": null
                }
            ]
        }
    ],
    "guide_url": "https://ujeebu.com/scrape/yahoo-news",
    "note": "Ujeebu scrapes any public website. These guides are a selection of popular sites we test every day, with settings that work today; a site that is not listed works with the same API: try any URL in the Playground (https://ujeebu.com/playground) or send us the URL (https://ujeebu.com/contact) and we will check it.",
    "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\": {...}}."
}