{
  "openapi": "3.0.1",
  "info": {
    "title": "Yahoo Finance Stock Price Scraper - Quotes, History & Dividends",
    "description": "Get Yahoo Finance stock prices by ticker or company name: latest quote, change vs previous close, OHLCV history from 1-minute to monthly bars, dividends and splits. One row per symbol or one row per bar. Monitoring mode returns a symbol only when its price moves past your threshold.",
    "version": "0.1",
    "x-build-id": "1hxNeBgCgmNziKbIO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~yahoo-finance-stock-price-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-yahoo-finance-stock-price-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/neverempty~yahoo-finance-stock-price-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-yahoo-finance-stock-price-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/neverempty~yahoo-finance-stock-price-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-yahoo-finance-stock-price-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": {
          "symbols": {
            "title": "Symbols (tickers)",
            "type": "array",
            "description": "Yahoo Finance symbols, one per line (commas also separate entries): stocks such as AAPL or BRK-B, other exchanges with Yahoo's suffix such as 7203.T (Tokyo) or VOD.L (London), indices such as ^GSPC, ETFs, mutual funds, futures such as ES=F, currencies such as EURUSD=X and crypto such as BTC-USD. Lower case is accepted. A repeated symbol is read and charged once and the repeat gets a free 'duplicate' row. If you leave both this field and Company names out with monitoring off, three example symbols are read; with monitoring on, one of them is required.",
            "items": {
              "type": "string"
            }
          },
          "companyNames": {
            "title": "Company names (looked up with Yahoo search)",
            "type": "array",
            "description": "Company names to look up, one per line, for example Microsoft or Toyota Motor. Each name is sent to Yahoo Finance search and the first stock, ETF, fund or index Yahoo lists is used; every row shows the name and exchange Yahoo matched (searchMatchName, searchMatchExchange), so check them. Yahoo usually lists the main US listing first (Toyota Motor gives TM on NYSE, not 7203.T in Tokyo): for another listing, give its symbol instead. A name Yahoo does not match gets a free row.",
            "items": {
              "type": "string"
            }
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "symbol",
              "bar"
            ],
            "type": "string",
            "description": "symbol = one row per symbol: the latest price, the change from the previous close, the day's range and volume, the 52-week range, and (if price history is on) all price bars in a 'bars' list plus dividends and splits; charged per symbol row. bar = one row per price bar (date, open, high, low, close, adjusted close, volume) and one row per dividend or split, newest first, ready for a spreadsheet; charged per row at the lower bar price. Monitoring mode needs 'symbol'.",
            "default": "symbol"
          },
          "includeHistory": {
            "title": "Include price history (symbol format)",
            "type": "boolean",
            "description": "On = each symbol row also carries the price bars for the range and interval below, with dividends and splits. Off = the latest quote only (one request per symbol). The price per symbol row is the same either way. Always on in the bar format; never read in monitoring mode.",
            "default": true
          },
          "range": {
            "title": "History range",
            "enum": [
              "1d",
              "5d",
              "1mo",
              "3mo",
              "6mo",
              "1y",
              "2y",
              "5y",
              "10y",
              "ytd",
              "max"
            ],
            "type": "string",
            "description": "How far back the price history goes, counted back from now. Ignored when From date is set. 'max' is the whole history Yahoo has (Apple: from 1980-12-12, about 11,500 daily bars). Intraday intervals only allow short ranges: 1m up to 5d, 2m to 90m up to 1mo, 60m/1h/4h up to 2y or year to date.",
            "default": "1mo"
          },
          "startDate": {
            "title": "From date",
            "type": "string",
            "description": "YYYY-MM-DD. Returns bars from this date (the exchange's local date) instead of using History range. Yahoo keeps 1m bars for the last 30 days (a From date up to 28 days back is accepted), 2m to 90m bars for 60 days (up to 58 days back) and 60m/1h/4h bars for 730 days (up to 728 days back); daily and longer bars go back to the first trading day."
          },
          "endDate": {
            "title": "To date",
            "type": "string",
            "description": "YYYY-MM-DD, included. Leave empty to go up to the latest bar. Needs From date. Weekly, 5-day, monthly and quarterly bars are cut at From date and To date: the first and last of them can cover only part of their week, month or quarter."
          },
          "interval": {
            "title": "Bar interval",
            "enum": [
              "1m",
              "2m",
              "5m",
              "15m",
              "30m",
              "60m",
              "90m",
              "1h",
              "4h",
              "1d",
              "5d",
              "1wk",
              "1mo",
              "3mo"
            ],
            "type": "string",
            "description": "The length of one price bar. 1d = daily. Settings Yahoo does not allow (for example 1m bars for a month, or 1h bars for 5 years) are rejected before anything is requested, with a free row that says why.",
            "default": "1d"
          },
          "includeEvents": {
            "title": "Include dividends and splits",
            "type": "boolean",
            "description": "On = dividends and stock splits inside the history period are returned (a list in the symbol format, their own rows in the bar format). Off = price bars only.",
            "default": true
          },
          "maxResults": {
            "title": "Maximum rows to return",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "The most charged rows one run returns. Leave empty for the default: 1,000 in the symbol format, 10,000 in the bar format. In the bar format rows are returned newest first, so a limit drops the oldest bars and a free row says how many were left out. In monitoring mode it does not limit the symbols returned. Up to 1,000 symbols or names are read per run."
          },
          "monitoringMode": {
            "title": "Monitoring mode: return a symbol only when its price moved",
            "type": "boolean",
            "description": "Off = every symbol comes back with its current quote, charged per row. On = the Actor remembers the price in the row it last returned for each symbol and, on later runs, returns a symbol only when its latest price moved by at least the threshold below since then (or its currency changed), with the move in price and percent. The first run returns every symbol once to set the baseline. Prices do not move while a market is closed. Price history is not read in monitoring mode. **Every symbol whose quote is read costs $0.30 per 1,000 checks, moved or not** (symbols Yahoo does not know, unmatched names and rate-limited requests are free), plus the symbol row price for the rows returned. Example: 50 symbols every 15 minutes during a 6.5-hour US trading day, 22 days a month = 28,600 checks = $8.58. The Actor reads only as many symbols as the run's maximum total charge can pay for with a check and a row each. Prices are remembered per symbol and threshold; do not put the same symbol with the same threshold in two schedules that can run at the same time.",
            "default": false
          },
          "thresholdPercent": {
            "title": "Price move threshold (%)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Monitoring mode only: a symbol is returned when its latest price differs by this many percent or more from the price in the row last returned for it. 1 = a move of 1% up or down. From 0.01 to 1000.",
            "default": 1
          },
          "resetMonitoringState": {
            "title": "Forget what was remembered and start over",
            "type": "boolean",
            "description": "Clears every remembered price for this Actor, so the next monitoring run returns each symbol once again as a first check. This affects all your monitoring runs. Turn it off again after one run: left on in a schedule, every run returns every symbol as a first check and charges the row price for it.",
            "default": false
          },
          "useProxy": {
            "title": "Use a proxy if Yahoo rate-limits the request",
            "type": "boolean",
            "description": "Every request is sent directly first. Only if Yahoo answers with a rate limit (HTTP 429), an error page or no response is that request retried through an Apify proxy session, with pauses; the next request is sent directly again. With it off, those requests are retried directly and then returned as a free 'blocked' row, and no proxy is paid for.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}