{
  "title": "Google News Scraper Input",
  "description": "Search Google News by keyword or browse topics, convert Google News URLs, read RSS feeds, or extract full text from article URLs.",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "mode": {
      "title": "Mode",
      "type": "string",
      "description": "What to scrape. Each mode reads its own list field below.",
      "editor": "select",
      "enum": [
        "keyword",
        "topic",
        "newsUrl",
        "rss",
        "articleUrls"
      ],
      "enumTitles": [
        "Keyword search",
        "Browse a topic",
        "Google News URL",
        "RSS / Atom feed",
        "Direct article URLs (full text)"
      ],
      "default": "keyword",
      "prefill": "keyword"
    },
    "queries": {
      "title": "Search queries (mode=keyword)",
      "type": "array",
      "description": "One or more keyword queries. Google operators such as site:, intitle: and OR are supported. Results are deduplicated across queries.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [
        "artificial intelligence"
      ]
    },
    "topics": {
      "title": "Topics (mode=topic)",
      "type": "array",
      "description": "Topic names (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH), TOP for top stories, Google News topic hashes/section URLs, or topic URLs. Topic feeds ignore server-side date filters; results are filtered after download.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": []
    },
    "newsUrls": {
      "title": "Google News URLs (mode=newsUrl)",
      "type": "array",
      "description": "Google News search URLs, topic URLs, RSS search/topic URLs, or RSS/Atom feed URLs to convert into a feed.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": []
    },
    "rssUrls": {
      "title": "RSS / Atom feeds (mode=rss)",
      "type": "array",
      "description": "Any public RSS or Atom feed. Google News links inside the feed are resolved to publisher URLs automatically.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": []
    },
    "articleUrls": {
      "title": "Article URLs (mode=articleUrls)",
      "type": "array",
      "description": "Publisher article URLs or Google News article URLs. Every page is fetched and full text is extracted, with a per-record status when a publisher blocks or paywalls it.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": []
    },
    "language": {
      "title": "Language",
      "type": "string",
      "description": "Language of the Google News edition. Combined with country in the edition token (for example US:en, DE:de, JP:ja).",
      "editor": "select",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it",
        "pt",
        "nl",
        "pl",
        "ru",
        "uk",
        "tr",
        "ar",
        "he",
        "fa",
        "hi",
        "bn",
        "ur",
        "ta",
        "te",
        "ml",
        "mr",
        "gu",
        "kn",
        "pa",
        "ja",
        "ko",
        "zh",
        "th",
        "vi",
        "id",
        "ms",
        "fil",
        "sv",
        "no",
        "da",
        "fi",
        "cs",
        "sk",
        "hu",
        "ro",
        "bg",
        "el",
        "hr",
        "sr",
        "sl",
        "lt",
        "lv",
        "et",
        "ca",
        "eu",
        "gl",
        "af",
        "sw",
        "am",
        "az",
        "kk",
        "uz",
        "ne",
        "si",
        "my",
        "km",
        "lo",
        "mn",
        "ka",
        "hy",
        "is",
        "ga",
        "mt",
        "mk",
        "sq",
        "bs",
        "be",
        "ky",
        "tg"
      ],
      "enumTitles": [
        "English",
        "German",
        "French",
        "Spanish",
        "Italian",
        "Portuguese",
        "Dutch",
        "Polish",
        "Russian",
        "Ukrainian",
        "Turkish",
        "Arabic",
        "Hebrew",
        "Persian",
        "Hindi",
        "Bengali",
        "Urdu",
        "Tamil",
        "Telugu",
        "Malayalam",
        "Marathi",
        "Gujarati",
        "Kannada",
        "Punjabi",
        "Japanese",
        "Korean",
        "Chinese",
        "Thai",
        "Vietnamese",
        "Indonesian",
        "Malay",
        "Filipino",
        "Swedish",
        "Norwegian",
        "Danish",
        "Finnish",
        "Czech",
        "Slovak",
        "Hungarian",
        "Romanian",
        "Bulgarian",
        "Greek",
        "Croatian",
        "Serbian",
        "Slovenian",
        "Lithuanian",
        "Latvian",
        "Estonian",
        "Catalan",
        "Basque",
        "Galician",
        "Afrikaans",
        "Swahili",
        "Amharic",
        "Azerbaijani",
        "Kazakh",
        "Uzbek",
        "Nepali",
        "Sinhala",
        "Burmese",
        "Khmer",
        "Lao",
        "Mongolian",
        "Georgian",
        "Armenian",
        "Icelandic",
        "Irish",
        "Maltese",
        "Macedonian",
        "Albanian",
        "Bosnian",
        "Belarusian",
        "Kyrgyz",
        "Tajik"
      ],
      "default": "en",
      "prefill": "en"
    },
    "country": {
      "title": "Country / edition",
      "type": "string",
      "description": "Country edition for Google News. The actor always pins the edition so results do not change with the machine's IP.",
      "editor": "select",
      "enum": [
        "US",
        "GB",
        "CA",
        "AU",
        "NZ",
        "IE",
        "IN",
        "PK",
        "BD",
        "LK",
        "NP",
        "DE",
        "FR",
        "ES",
        "IT",
        "PT",
        "NL",
        "BE",
        "AT",
        "CH",
        "SE",
        "NO",
        "DK",
        "FI",
        "IS",
        "PL",
        "CZ",
        "SK",
        "HU",
        "RO",
        "BG",
        "GR",
        "HR",
        "RS",
        "SI",
        "UA",
        "RU",
        "TR",
        "IL",
        "SA",
        "AE",
        "EG",
        "QA",
        "KW",
        "BH",
        "OM",
        "JO",
        "LB",
        "IQ",
        "IR",
        "MA",
        "DZ",
        "TN",
        "NG",
        "KE",
        "ZA",
        "GH",
        "ET",
        "TZ",
        "UG",
        "MX",
        "BR",
        "AR",
        "CL",
        "CO",
        "PE",
        "VE",
        "EC",
        "UY",
        "PY",
        "BO",
        "CR",
        "PA",
        "DO",
        "GT",
        "HN",
        "SV",
        "NI",
        "PR",
        "JP",
        "KR",
        "CN",
        "HK",
        "TW",
        "SG",
        "MY",
        "ID",
        "TH",
        "VN",
        "PH",
        "KH",
        "MM",
        "LA",
        "MN",
        "KZ",
        "UZ",
        "AZ",
        "GE",
        "AM"
      ],
      "enumTitles": [
        "United States",
        "United Kingdom",
        "Canada",
        "Australia",
        "New Zealand",
        "Ireland",
        "India",
        "Pakistan",
        "Bangladesh",
        "Sri Lanka",
        "Nepal",
        "Germany",
        "France",
        "Spain",
        "Italy",
        "Portugal",
        "Netherlands",
        "Belgium",
        "Austria",
        "Switzerland",
        "Sweden",
        "Norway",
        "Denmark",
        "Finland",
        "Iceland",
        "Poland",
        "Czechia",
        "Slovakia",
        "Hungary",
        "Romania",
        "Bulgaria",
        "Greece",
        "Croatia",
        "Serbia",
        "Slovenia",
        "Ukraine",
        "Russia",
        "Turkey",
        "Israel",
        "Saudi Arabia",
        "United Arab Emirates",
        "Egypt",
        "Qatar",
        "Kuwait",
        "Bahrain",
        "Oman",
        "Jordan",
        "Lebanon",
        "Iraq",
        "Iran",
        "Morocco",
        "Algeria",
        "Tunisia",
        "Nigeria",
        "Kenya",
        "South Africa",
        "Ghana",
        "Ethiopia",
        "Tanzania",
        "Uganda",
        "Mexico",
        "Brazil",
        "Argentina",
        "Chile",
        "Colombia",
        "Peru",
        "Venezuela",
        "Ecuador",
        "Uruguay",
        "Paraguay",
        "Bolivia",
        "Costa Rica",
        "Panama",
        "Dominican Republic",
        "Guatemala",
        "Honduras",
        "El Salvador",
        "Nicaragua",
        "Puerto Rico",
        "Japan",
        "South Korea",
        "China",
        "Hong Kong",
        "Taiwan",
        "Singapore",
        "Malaysia",
        "Indonesia",
        "Thailand",
        "Vietnam",
        "Philippines",
        "Cambodia",
        "Myanmar",
        "Laos",
        "Mongolia",
        "Kazakhstan",
        "Uzbekistan",
        "Azerbaijan",
        "Georgia",
        "Armenia"
      ],
      "default": "US",
      "prefill": "US"
    },
    "dateRange": {
      "title": "Date range",
      "type": "string",
      "description": "Recency window. Every item is post-filtered by its real publication time, so items newer than the window never leak. 'custom' uses startDate/endDate. Multi-day ranges can be walked day by day to collect more than one feed page.",
      "editor": "select",
      "enum": [
        "any",
        "1h",
        "6h",
        "12h",
        "1d",
        "7d",
        "30d",
        "1y",
        "custom"
      ],
      "enumTitles": [
        "Any time",
        "Past hour",
        "Past 6 hours",
        "Past 12 hours",
        "Past day",
        "Past week",
        "Past 30 days",
        "Past year",
        "Custom dates"
      ],
      "default": "any",
      "prefill": "any"
    },
    "startDate": {
      "title": "Start date",
      "type": "string",
      "description": "Custom range start (YYYY-MM-DD, inclusive). Also used when dateRange=custom.",
      "editor": "textfield"
    },
    "endDate": {
      "title": "End date",
      "type": "string",
      "description": "Custom range end (YYYY-MM-DD, inclusive). Items published after the end are dropped client-side.",
      "editor": "textfield"
    },
    "maxResultsPerQuery": {
      "title": "Max results per query window",
      "type": "integer",
      "description": "Maximum records taken from each Google News feed request (1-100, Google's own cap is about 100). When a date range spans several days, the actor walks day windows and can collect more than 100 for one query, up to maxItems.",
      "default": 20,
      "minimum": 1,
      "maximum": 100,
      "prefill": 3
    },
    "maxItems": {
      "title": "Max items",
      "type": "integer",
      "description": "Hard cap on unique records emitted by the run (1-5000).",
      "default": 500,
      "minimum": 1,
      "maximum": 5000,
      "prefill": 3
    },
    "extractFullText": {
      "title": "Extract full text",
      "type": "boolean",
      "description": "Fetch each publisher page and extract its article body, description, author, and image. Default off for fast metadata-only runs. The articleUrls mode always extracts.",
      "default": false,
      "prefill": false
    },
    "maxFullText": {
      "title": "Max full-text extractions",
      "type": "integer",
      "description": "Maximum pages fetched for full text per run (1-500). Records beyond this cap are still returned with fullTextStatus=skipped_cap.",
      "default": 100,
      "minimum": 1,
      "maximum": 500,
      "prefill": 100
    },
    "proxyConfiguration": {
      "title": "Proxy configuration",
      "type": "object",
      "description": "Optional. No proxy is needed by default; Google News RSS and publisher pages work without one. Residential proxies can make Google rate-limit more, so leave this off unless you need it.",
      "editor": "proxy",
      "default": {
        "useApifyProxy": false
      },
      "prefill": {
        "useApifyProxy": false
      }
    }
  },
  "required": [
    "mode"
  ]
}
