{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper: Full-Text Articles to Markdown",
    "description": "Find Google News articles by keyword or topic and return each full article as clean Markdown plus RAG-ready chunks.",
    "version": "1.0",
    "x-build-id": "m9sc57W89zKc5YAPa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sunburst077~google-news-to-markdown/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sunburst077-google-news-to-markdown",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/sunburst077~google-news-to-markdown/runs": {
      "post": {
        "operationId": "runs-sync-sunburst077-google-news-to-markdown",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/sunburst077~google-news-to-markdown/run-sync": {
      "post": {
        "operationId": "run-sync-sunburst077-google-news-to-markdown",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "queries": {
            "title": "Keywords / queries",
            "type": "array",
            "description": "Search Google News the same way you would in the search box. Operators such as OR, quotes, minus, site:, and intitle: work. Each query is fetched as its own RSS search.",
            "default": [
              "NASA"
            ],
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topic feeds",
            "type": "array",
            "description": "Built-in Google News sections. These are standalone feeds, not combined with your keywords. Date filters are applied after download because topic RSS cannot take when:.",
            "items": {
              "type": "string",
              "enum": [
                "WORLD",
                "NATION",
                "BUSINESS",
                "TECHNOLOGY",
                "ENTERTAINMENT",
                "SPORTS",
                "SCIENCE",
                "HEALTH"
              ],
              "enumTitles": [
                "World",
                "Nation",
                "Business",
                "Technology",
                "Entertainment",
                "Sports",
                "Science",
                "Health"
              ]
            },
            "default": []
          },
          "topicUrls": {
            "title": "Custom topic / section URLs",
            "type": "array",
            "description": "Paste a Google News topic or section URL from your browser (news.google.com/topics/... or .../sections/...). Converted to the public RSS feed automatically.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "topicsHashed": {
            "title": "Hashed topic IDs",
            "type": "array",
            "description": "Topic hashes from a Google News URL, e.g. CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB or TOPIC/sections/SECTION.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locale": {
            "title": "Language and region",
            "enum": [
              "US:en",
              "GB:en",
              "CA:en",
              "AU:en",
              "IN:en",
              "IE:en",
              "NZ:en",
              "ZA:en",
              "SG:en",
              "PH:en",
              "US:es",
              "MX:es",
              "ES:es",
              "AR:es",
              "CO:es",
              "CL:es",
              "DE:de",
              "AT:de",
              "CH:de",
              "FR:fr",
              "CA:fr",
              "BE:fr",
              "CH:fr",
              "IT:it",
              "PT:pt",
              "BR:pt",
              "NL:nl",
              "BE:nl",
              "JP:ja",
              "KR:ko",
              "CN:zh-Hans",
              "TW:zh-Hant",
              "HK:zh-Hant",
              "RU:ru",
              "PL:pl",
              "CZ:cs",
              "SK:sk",
              "HU:hu",
              "SE:sv",
              "NO:no",
              "DK:da",
              "FI:fi",
              "TR:tr",
              "GR:el",
              "RO:ro",
              "BG:bg",
              "HR:hr",
              "UA:uk",
              "ID:id",
              "TH:th",
              "VN:vi",
              "MY:ms",
              "IL:he",
              "AE:ar",
              "SA:ar",
              "EG:ar"
            ],
            "type": "string",
            "description": "Google News edition as country:language (ceid). Sets hl, gl, and ceid together.",
            "default": "US:en"
          },
          "language": {
            "title": "hl override",
            "type": "string",
            "description": "Optional Google News hl (e.g. en-US). Leave empty to derive it from the locale."
          },
          "country": {
            "title": "gl override",
            "type": "string",
            "description": "Optional Google News gl / country code (e.g. US). Leave empty to derive it from the locale."
          },
          "timeWindow": {
            "title": "Time window",
            "enum": [
              "1h",
              "1d",
              "7d",
              "30d",
              "1y",
              "all"
            ],
            "type": "string",
            "description": "Added to keyword searches as when:1d / when:7d / …. Ignored when After / Before dates are set. Topic feeds are filtered client-side.",
            "default": "7d"
          },
          "dateAfter": {
            "title": "Published after",
            "type": "string",
            "description": "YYYY-MM-DD. Added as after: on keyword searches. Also filters topic results."
          },
          "dateBefore": {
            "title": "Published before",
            "type": "string",
            "description": "YYYY-MM-DD. Added as before: on keyword searches. Also filters topic results."
          },
          "maxArticlesPerQuery": {
            "title": "Max articles per query",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Cap per keyword or topic feed. Google News search RSS returns at most ~100 items.",
            "default": 8
          },
          "maxArticles": {
            "title": "Max articles (all queries)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Optional global cap after de-duplication. Leave empty to keep every per-query result."
          },
          "deduplicate": {
            "title": "De-duplicate across queries",
            "type": "boolean",
            "description": "Drop the same Google News item (and the same resolved publisher URL) when it appears in more than one query.",
            "default": true
          },
          "extractFullText": {
            "title": "Extract full article text",
            "type": "boolean",
            "description": "Fetch the publisher page and convert the main article to Markdown. Turn off for metadata-only runs (cheaper, faster).",
            "default": true
          },
          "createChunks": {
            "title": "Create RAG chunks",
            "type": "boolean",
            "description": "Split Markdown into heading-aware chunks: text, source, section, chunkIndex, startChar, endChar.",
            "default": true
          },
          "headingAware": {
            "title": "Heading-aware chunks",
            "type": "boolean",
            "description": "Split on Markdown headings and keep the heading path in section. Disable for a plain sliding window.",
            "default": true
          },
          "chunkSize": {
            "title": "Chunk size (characters)",
            "minimum": 200,
            "maximum": 20000,
            "type": "integer",
            "description": "Target maximum characters per chunk. About 4 characters per token.",
            "default": 1600
          },
          "chunkOverlap": {
            "title": "Chunk overlap (characters)",
            "minimum": 0,
            "maximum": 4000,
            "type": "integer",
            "description": "Characters repeated from the previous chunk when a section is split.",
            "default": 160
          },
          "minFullTextChars": {
            "title": "Minimum full-text characters",
            "minimum": 40,
            "maximum": 20000,
            "type": "integer",
            "description": "Shorter extractions are treated as paywalled or empty (status metadata_only, no full-text charge).",
            "default": 240
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Parallel HTTP requests. Keep this modest to stay polite to publishers.",
            "default": 4
          },
          "requestDelayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Global polite pause. Hosts get a slightly longer gap.",
            "default": 250
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait for each HTTP request before giving up.",
            "default": 25
          },
          "maxRetries": {
            "title": "Retries",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Retries for timeouts and 429 / 5xx responses.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Off by default — most publisher pages and Google News RSS work without a proxy. Turn on Apify Proxy only if you see blocks.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}