{
  "openapi": "3.0.1",
  "info": {
    "title": "Fox News Articles Scraper",
    "description": "Collects Fox News articles from 38 sections with headline, full body text, author, keywords, word count, section and lead image. Reads the publisher feeds for instant full text and the archive sitemaps for 1.6M URLs back to 2014, with date and keyword filtering.",
    "version": "0.1",
    "x-build-id": "fMlcoPMAIehwQvxP7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~foxnews-articles-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-foxnews-articles-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/scrapyx~foxnews-articles-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-foxnews-articles-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/scrapyx~foxnews-articles-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-foxnews-articles-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": {
          "sections": {
            "title": "Sections",
            "type": "array",
            "description": "Which Fox News sections to pull, each returned with its own summary row. 'latest' means no section filter: Fox's own cross-section feed, or the unfiltered sitemap when an archive or date range is requested. Sections marked 'RSS feed + sitemap' have a publisher feed that already contains the full article text, so they cost one request; the other 25 exist only in the sitemaps and need one page fetch per article. Unknown values are refused before any request rather than silently returning nothing.",
            "items": {
              "type": "string",
              "enum": [
                "analysis",
                "area-51",
                "auto",
                "culture",
                "deals",
                "entertainment",
                "faith-values",
                "family",
                "food-drink",
                "forum",
                "fox-news",
                "games",
                "great-outdoors",
                "health",
                "latest",
                "lifestyle",
                "media",
                "midterms-2018",
                "official-polls",
                "opinion",
                "outkick",
                "outkick-analysis",
                "outkick-betting",
                "outkick-culture",
                "outkick-shows",
                "outkick-sports",
                "politics",
                "real-estate",
                "science",
                "sports",
                "story",
                "tech",
                "transcript",
                "travel",
                "true-crime",
                "uncategorized",
                "us",
                "weather",
                "world"
              ],
              "enumTitles": [
                "analysis  (sitemap only)",
                "area-51  (sitemap only)",
                "auto  (sitemap only)",
                "culture  (sitemap only)",
                "deals  (sitemap only)",
                "entertainment  (RSS feed + sitemap)",
                "faith-values  (sitemap only)",
                "family  (sitemap only)",
                "food-drink  (sitemap only)",
                "forum  (sitemap only)",
                "fox-news  (sitemap only)",
                "games  (sitemap only)",
                "great-outdoors  (sitemap only)",
                "health  (RSS feed + sitemap)",
                "latest  (RSS feed + sitemap)",
                "lifestyle  (RSS feed + sitemap)",
                "media  (RSS feed + sitemap)",
                "midterms-2018  (sitemap only)",
                "official-polls  (sitemap only)",
                "opinion  (RSS feed + sitemap)",
                "outkick  (sitemap only)",
                "outkick-analysis  (sitemap only)",
                "outkick-betting  (sitemap only)",
                "outkick-culture  (sitemap only)",
                "outkick-shows  (sitemap only)",
                "outkick-sports  (sitemap only)",
                "politics  (RSS feed + sitemap)",
                "real-estate  (sitemap only)",
                "science  (RSS feed + sitemap)",
                "sports  (RSS feed + sitemap)",
                "story  (sitemap only)",
                "tech  (RSS feed + sitemap)",
                "transcript  (sitemap only)",
                "travel  (RSS feed + sitemap)",
                "true-crime  (sitemap only)",
                "uncategorized  (sitemap only)",
                "us  (RSS feed + sitemap)",
                "weather  (sitemap only)",
                "world  (RSS feed + sitemap)"
              ]
            },
            "default": [
              "latest"
            ]
          },
          "maxItemsPerSection": {
            "title": "Max articles per section",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Cap on articles returned for each section, applied after the date, section and keyword filters. The RSS surface holds exactly 25 articles per section, so asking for more than 25 without turning on 'Include archive' cannot return more than 25. Sections are returned newest first, so raising this reaches further back in time.",
            "default": 25
          },
          "includeFullBody": {
            "title": "Fetch full article text",
            "type": "boolean",
            "description": "For sitemap-sourced articles, fetch each article's own page and read its JSON-LD for the complete body text, author, keywords, word count and section. Turn this off for a fast headline-and-URL run. Articles coming from an RSS feed always include their full body at no extra cost, so this setting does not affect them.",
            "default": true
          },
          "includeArchive": {
            "title": "Include archive",
            "type": "boolean",
            "description": "Walk Fox's paginated archive sitemaps as well as the rolling ~48-hour news sitemap. The archive holds roughly 1.67 million article URLs in 167 partitions of 10,000, newest first, reaching back to November 2014. A partition is a multi-megabyte download, so one is only fetched when the fresh window cannot already fill your item cap or date range; the summary row reports exactly how many were fetched and how many were skipped. Turning this on switches every requested section to the sitemap surface.",
            "default": false
          },
          "maxArchivePages": {
            "title": "Max archive partitions per section",
            "minimum": 1,
            "maximum": 167,
            "type": "integer",
            "description": "How many 10,000-URL archive partitions to download per section when 'Include archive' is on, newest first. Each partition is a multi-megabyte XML file, so this is the real cost control for deep runs. Partitions that fall entirely before 'Published from' are skipped without being downloaded.",
            "default": 1
          },
          "dateFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Optional lower bound on the publish date, inclusive, as YYYY-MM-DD. Setting it switches every section to the sitemap surface, because the RSS feeds carry only the newest 25 articles and cannot answer a date range. Articles with no usable date are excluded whenever a bound is set."
          },
          "dateTo": {
            "title": "Published to",
            "type": "string",
            "description": "Optional upper bound on the publish date, inclusive, as YYYY-MM-DD. Same surface switch as 'Published from'."
          },
          "keywords": {
            "title": "Keyword filter",
            "type": "array",
            "description": "Optional. Keep only articles whose headline, description or body text contains one of these words, matched case-insensitively. This is filtering done by this Actor after fetching, not a search sent to Fox News: none of Fox's public surfaces offers a working search parameter, so the filter narrows what a run already retrieved rather than widening what it can reach.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Upper bound on requests in flight at once across every section in this run.",
            "default": 5
          },
          "minRequestInterval": {
            "title": "Min seconds between request starts",
            "minimum": 0,
            "type": "number",
            "description": "Shared pacing floor across every request this run makes. Fox News sets no Crawl-delay in robots.txt, so this default is this portfolio's own politeness baseline rather than a site requirement.",
            "default": 0.25
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy on the shared datacenter pool. That is the default because it is included in your plan at no extra cost and this target needs nothing more: no bot-mitigation gate was seen on any Fox News surface during testing. If you ever see blocks or empty results, switch the group here to Residential, which Apify bills per gigabyte.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}