{
  "openapi": "3.0.1",
  "info": {
    "title": "News Scraper - Keyword News Search & Monitoring API",
    "description": "Search 250+ news publishers by keyword in one run: headline, link, time, publisher, description, keywords. Country, language and topic filters, your own sites and feeds, duplicate stories collapsed, only-new alerts. $1 per 1,000 articles.",
    "version": "0.1",
    "x-build-id": "gpzGk8LFpLLwyw1HT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidytools~news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidytools-news-scraper",
        "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/tidytools~news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tidytools-news-scraper",
        "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/tidytools~news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tidytools-news-scraper",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "What to look for, one search per line. All words of a line must appear (title, description, news keywords or the link), in any order, whole words, case and accents ignored. Use \"quotes\" for an exact phrase, -word to exclude, OR between alternatives and word* for a prefix, e.g. Nvidia OR AMD, \"interest rates\" -mortgage, tariff*. An article matching any line is returned. Leave empty to get the latest articles of the selected publishers.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries (optional)",
            "type": "array",
            "description": "Only publishers from these countries (254 publishers in 47 countries). Empty = all. Does not apply to your own sources.",
            "items": {
              "type": "string",
              "enum": [
                "AR",
                "AU",
                "AT",
                "BE",
                "BR",
                "CA",
                "CN",
                "CO",
                "CZ",
                "DK",
                "FI",
                "FR",
                "DE",
                "GR",
                "HK",
                "IN",
                "ID",
                "IE",
                "IL",
                "IT",
                "JP",
                "MX",
                "NL",
                "NZ",
                "NG",
                "NO",
                "PK",
                "PE",
                "PH",
                "PL",
                "PT",
                "QA",
                "RU",
                "SG",
                "ZA",
                "KR",
                "ES",
                "SE",
                "CH",
                "TW",
                "TH",
                "TR",
                "UA",
                "AE",
                "GB",
                "US",
                "VN"
              ],
              "enumTitles": [
                "Argentina (3)",
                "Australia (4)",
                "Austria (1)",
                "Belgium (3)",
                "Brazil (6)",
                "Canada (4)",
                "China (1)",
                "Colombia (1)",
                "Czechia (1)",
                "Denmark (2)",
                "Finland (2)",
                "France (9)",
                "Germany (12)",
                "Greece (1)",
                "Hong Kong SAR China (2)",
                "India (11)",
                "Indonesia (1)",
                "Ireland (2)",
                "Israel (2)",
                "Italy (5)",
                "Japan (5)",
                "Mexico (1)",
                "Netherlands (5)",
                "New Zealand (2)",
                "Nigeria (2)",
                "Norway (2)",
                "Pakistan (1)",
                "Peru (1)",
                "Philippines (2)",
                "Poland (2)",
                "Portugal (2)",
                "Qatar (1)",
                "Russia (2)",
                "Singapore (4)",
                "South Africa (1)",
                "South Korea (4)",
                "Spain (6)",
                "Sweden (3)",
                "Switzerland (2)",
                "Taiwan (9)",
                "Thailand (1)",
                "Türkiye (2)",
                "Ukraine (2)",
                "United Arab Emirates (3)",
                "United Kingdom (15)",
                "United States (99)",
                "Vietnam (2)"
              ]
            }
          },
          "languages": {
            "title": "Languages (optional)",
            "type": "array",
            "description": "Only articles in these languages (publisher language, or the article's own language when its news sitemap says so). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "zh",
                "cs",
                "da",
                "nl",
                "en",
                "fi",
                "fr",
                "de",
                "el",
                "hi",
                "it",
                "ja",
                "ko",
                "no",
                "pl",
                "pt",
                "ru",
                "es",
                "sv",
                "tr",
                "uk",
                "vi"
              ],
              "enumTitles": [
                "Chinese (10)",
                "Czech (1)",
                "Danish (2)",
                "Dutch (6)",
                "English (165)",
                "Finnish (2)",
                "French (7)",
                "German (14)",
                "Greek (1)",
                "Hindi (2)",
                "Italian (5)",
                "Japanese (3)",
                "Korean (2)",
                "Norwegian (2)",
                "Polish (2)",
                "Portuguese (8)",
                "Russian (2)",
                "Spanish (12)",
                "Swedish (3)",
                "Turkish (2)",
                "Ukrainian (1)",
                "Vietnamese (2)"
              ]
            }
          },
          "topics": {
            "title": "Publisher topics (optional)",
            "type": "array",
            "description": "Only publishers that cover these topics, e.g. technology for TechCrunch, The Verge, heise... Empty = all publishers (general news sites also cover every topic, so for a subject search usually leave this empty and use keywords).",
            "items": {
              "type": "string",
              "enum": [
                "general",
                "world",
                "politics",
                "business",
                "finance",
                "technology",
                "startups",
                "security",
                "crypto",
                "science",
                "health",
                "sports",
                "entertainment",
                "gaming",
                "marketing",
                "retail",
                "energy",
                "automotive",
                "real-estate",
                "legal",
                "education",
                "travel",
                "food",
                "press-releases"
              ],
              "enumTitles": [
                "General (141)",
                "World (9)",
                "Politics (7)",
                "Business (35)",
                "Finance (9)",
                "Technology (31)",
                "Startups (7)",
                "Security (4)",
                "Crypto (4)",
                "Science (5)",
                "Health (3)",
                "Sports (4)",
                "Entertainment (8)",
                "Gaming (4)",
                "Marketing (4)",
                "Retail (3)",
                "Energy (4)",
                "Automotive (2)",
                "Real estate (2)",
                "Legal (1)",
                "Education (2)",
                "Travel (1)",
                "Food (1)",
                "Press releases (wires) (5)"
              ]
            }
          },
          "sources": {
            "title": "Your own sources (optional)",
            "type": "array",
            "description": "More sites to read, one per line: a home page or domain (its Google News sitemap and RSS / Atom feeds are found automatically), a section page, or a feed or news sitemap address. Trade press, company newsrooms, local papers, blogs. Sources that cannot be read are listed as free error rows.",
            "items": {
              "type": "string"
            }
          },
          "onlyMySources": {
            "title": "Only my sources",
            "type": "boolean",
            "description": "Read only the sources listed above, not the built-in publisher list.",
            "default": false
          },
          "excludeDomains": {
            "title": "Exclude domains (optional)",
            "type": "array",
            "description": "Never return articles from these domains (and their subdomains), e.g. dailymail.co.uk.",
            "items": {
              "type": "string"
            }
          },
          "maxAgeHours": {
            "title": "Published within (hours)",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "Only articles published in the last N hours. Google News sitemaps hold about 48 hours; RSS feeds usually hold the latest 10-100 items, sometimes older. For a longer history, schedule the Actor with \"Only new articles\".",
            "default": 48
          },
          "maxArticles": {
            "title": "Maximum articles",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper limit of articles returned (and charged) in this run, after filters and duplicate collapsing.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first, or relevance (keyword in the title first, then articles matching more of your searches, then newest).",
            "default": "newest"
          },
          "searchIn": {
            "title": "Match keywords in",
            "enum": [
              "all",
              "title"
            ],
            "type": "string",
            "description": "Title, description, news keywords, categories and link words (default), or the headline only (fewer, more precise results).",
            "default": "all"
          },
          "collapseDuplicates": {
            "title": "Collapse the same story from several publishers",
            "type": "boolean",
            "description": "Wire stories (AP, Reuters, AFP...) republished with the same headline are returned once, earliest copy first, with the other publishers in alsoPublishedBy (free). Turn off to get every copy.",
            "default": true
          },
          "includeArticleDetails": {
            "title": "Add article page details",
            "type": "boolean",
            "description": "Also open each returned article page (if its robots.txt allows) and read the metadata it publishes: authors, section, tags, modified time, canonical link, paywall flag (isAccessibleForFree), word count and description. No article text is returned. Extra \"Article details\" event per article where metadata was found; blocked or empty pages are free.",
            "default": false
          },
          "detailsMaxArticles": {
            "title": "Details for the first N articles",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "With article details on, read details only for the first N articles of the results (0 = all).",
            "default": 100
          },
          "onlyNew": {
            "title": "Only new articles (monitoring)",
            "type": "boolean",
            "description": "For schedules: return only articles that an earlier run of the same monitor did not return (by link and by headline, remembered 14 days). Articles returned before are skipped for free. The first run returns everything.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Name of the \"only new\" memory. Runs with the same name share it; by default it is derived from your keywords and filters, so changing them starts a new memory."
          },
          "includeUndated": {
            "title": "Include articles without a date",
            "type": "boolean",
            "description": "Some feeds do not date their items. Off (default): such items are skipped, because their age cannot be checked.",
            "default": false
          },
          "csvExport": {
            "title": "Also save a CSV file",
            "type": "boolean",
            "description": "Save ARTICLES.csv (main columns) in the run's key-value store for Excel or Google Sheets.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel sources",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many publishers are read at the same time. Each publisher still gets one request at a time, with a short pause between requests.",
            "default": 16
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Not needed: the Actor reads publishers' public feeds and sitemaps from Apify's network. Set a proxy only if your own sources refuse data-center IPs. Apify proxy usage is billed to your Apify account."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}