{
  "openapi": "3.0.1",
  "info": {
    "title": "Article Extractor – News & Blog Articles to JSON & Markdown",
    "description": "Extract news and blog articles to clean JSON: title, author, published date, lead image, language, tags, text and Markdown. Give article URLs or a site URL: articles are found via RSS feeds, news sitemaps and section pages. Date filter and only-new mode for scheduled feeds. HTTP-only, fast, cheap.",
    "version": "0.1",
    "x-build-id": "EgUWSpSDQkdakTrju"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gazidev~article-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gazidev-article-extractor",
        "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/gazidev~article-extractor/runs": {
      "post": {
        "operationId": "runs-sync-gazidev-article-extractor",
        "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/gazidev~article-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-gazidev-article-extractor",
        "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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Start URLs (articles or sites)",
            "type": "array",
            "description": "Article URLs and/or news or blog site URLs, mixed freely. For a site or section URL (e.g. https://github.blog or https://example.com/technology) articles are discovered through its RSS/Atom feeds, Google News and XML sitemaps and article links on the page. Medium, Reddit, Google News and social networks are not supported.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "mode": {
            "title": "How to treat the start URLs",
            "enum": [
              "auto",
              "site",
              "urls"
            ],
            "type": "string",
            "description": "'Auto' extracts a start URL directly when it is an article, otherwise discovers the articles of that site. 'Sites' always discovers articles (the start page is never output). 'Article URLs only' extracts exactly the URLs you give, without discovery.",
            "default": "auto"
          },
          "maxArticlesPerSite": {
            "title": "Max articles per site",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "For site URLs: how many articles to extract per site, newest first when the feed or sitemap has dates.",
            "default": 20
          },
          "maxArticles": {
            "title": "Max articles in total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Hard cap for the whole run (0 = no cap). Your cost is at most this many x the article price.",
            "default": 0
          },
          "publishedAfter": {
            "title": "Only articles published after",
            "type": "string",
            "description": "Keep only articles published on or after this date. Absolute (2026-10-01) or relative (24 hours, 7 days). Older articles are skipped for free."
          },
          "keepUndated": {
            "title": "Keep articles without a date",
            "type": "boolean",
            "description": "When a date filter is set: keep articles whose publish date cannot be found.",
            "default": true
          },
          "onlyNew": {
            "title": "Only new articles since the last run",
            "type": "boolean",
            "description": "For scheduled runs: remembers every URL already processed (in a named key-value store derived from the start URLs) and extracts only articles that were not seen before. Seen and non-article pages are skipped without fetching and are free.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring state name",
            "type": "string",
            "description": "Optional. By default the memory is tied to the exact list of start URLs. Set a name to keep the same memory when you edit the list."
          },
          "useFeeds": {
            "title": "Discover via RSS / Atom feeds",
            "type": "boolean",
            "description": "Site URLs: read the site's feeds (link rel=alternate, /feed, /rss.xml ...). Fast and newest first.",
            "default": true
          },
          "useSitemaps": {
            "title": "Discover via sitemaps",
            "type": "boolean",
            "description": "Site URLs: read Google News sitemaps and XML sitemaps listed in robots.txt (or the common locations).",
            "default": true
          },
          "useLinks": {
            "title": "Discover via links on the page",
            "type": "boolean",
            "description": "Site URLs: also take article-looking links from the start page (useful for section pages such as /technology).",
            "default": true
          },
          "maxPagesPerSite": {
            "title": "Max pages fetched per site",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Safety cap on article candidates fetched per site, including pages that turn out not to be articles (those are free). 0 = automatic (3 x max articles + 10).",
            "default": 0
          },
          "minWords": {
            "title": "Minimum words for an article",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Discovered pages with fewer words are treated as non-articles (not output, not charged).",
            "default": 150
          },
          "includeText": {
            "title": "Include plain text",
            "type": "boolean",
            "description": "Add the clean article text (no Markdown syntax) as 'text'.",
            "default": true
          },
          "includeMarkdown": {
            "title": "Include Markdown",
            "type": "boolean",
            "description": "Add the article body as Markdown (headings, lists, tables, code, quotes) as 'markdown'. Good for LLM / RAG pipelines.",
            "default": true
          },
          "keepLinksInMarkdown": {
            "title": "Keep links in Markdown",
            "type": "boolean",
            "description": "Render links as [text](URL). Turn off for fewer tokens.",
            "default": true
          },
          "includeImagesInMarkdown": {
            "title": "Keep images in Markdown",
            "type": "boolean",
            "description": "Render in-article images as ![alt](URL). The lead image is always returned in 'leadImage'.",
            "default": false
          },
          "respectRobots": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip URLs disallowed by robots.txt and honour Crawl-delay (max 10 s). Strongly recommended.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Parallel requests in total.",
            "default": 10
          },
          "maxConcurrencyPerHost": {
            "title": "Max concurrency per site",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel requests to one host. Keep it low to be polite.",
            "default": 2
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Per-request timeout.",
            "default": 30
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries for timeouts, connection errors, 429 and 5xx responses (with backoff).",
            "default": 2
          },
          "userAgent": {
            "title": "User-Agent",
            "type": "string",
            "description": "Custom User-Agent header. Leave empty for the default, which identifies this Actor with a contact address."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Not needed for most news sites and blogs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}