Site scraper

Financial Data Scraper: Public Stock and Market Pages

HTTP $0.50JS rendering $2.00 per 1,000 results or your own scraper from $1.95/GB

Yahoo Finance has had no official API since 2017, so for stock prices in Python start with Alpaca's free market-data plan and its official alpaca-py SDK: daily and intraday US bars, real-time quotes from the IEX exchange and 200 historical calls a minute, with all US exchanges on its $99/month plan. Use Alpha Vantage's free key (25 requests a day) for fundamentals in simple scripts, yfinance for personal research, and SEC EDGAR's free APIs for filings. For the public fields those leave out, ProxyField's Web Scraping API is the financial data scraper: $0.50 per 1,000 successful results over plain HTTP, $0.20 from 10,000 results in one purchase, or $2.00 per 1,000 with JS rendering, paid from a crypto balance that never expires; access is through Contact sales. Some site categories are restricted to protect its network, including financial and government services.

Web Scraping API per 1,000 successful results
Web Scraping API prices per 1,000 successful results
FetchEntryVolume, from
HTTP$0.50$0.20
JS rendering$2.00$1.00

Billed on successful results only.

Your own scraper on residential proxies
from $1.95/GB Easy Trial: 1 GB for $2.95
gate.proxyfield.io:7000
Data

Best source for stock prices in Python without a Yahoo Finance API

Yahoo closed its official finance API in 2017, and Google Finance has no public API. For prices in Python, call a market-data API first and scrape only what none of them covers. The default pick is Alpaca's free plan: an official, documented API with a maintained Python SDK. The others fit narrower jobs:

SourceWhat it gives youPythonFree useBest for
yfinance (open-source library)Yahoo Finance quotes, daily and intraday history, dividends, splits, some fundamentalspip install yfinanceFree, Apache-2.0; unofficial and "intended for research and educational purposes"; Yahoo's finance API is "intended for personal use only"Learning, notebooks, personal research
Alpha VantageDaily and intraday time series, quotes, fundamentals, forex, crypto, indicatorsrequests against one REST endpointFree key: 25 requests a day; outputsize=compact (the latest 100 days) is free, full (25+ years) is premium, as are real-time and 15-minute delayed US data; datatype=csv returns CSVSimple scripts and fundamentals
Alpaca Market DataUS stock bars, trades and quotes over REST and WebSocketalpaca-py, the official SDKFree Basic plan: real-time from the IEX exchange only, 200 historical calls a minute, 30 WebSocket symbols, no data from the latest 15 minutes in historical calls; all US exchanges and 10,000 calls a minute on the $99/month Algo Trader Plus planIntraday and live US prices
Polygon.ioUS stock bars, trades, quotes and reference dataREST, with an official Python clientFree Basic plan: 5 calls a minute, end-of-day data, 2 years of history; Starter at $29/month adds 15-minute delayed data and 5 yearsEnd-of-day history for US stocks
Twelve DataTime series and quotes across stocks, forex and cryptoREST, with an official Python clientFree Basic plan: 8 API credits a minute, 800 a day, 3 marketsSmall multi-market scripts
Financial Modeling PrepEnd-of-day prices and company fundamentalsRESTFree plan with a daily call limit; check its pricing pageFundamentals next to prices
Nasdaq Data LinkCurated historical datasetsnasdaq-data-link packageSome free datasets, most paidResearch on a specific dataset
SEC EDGARFilings and XBRL company facts for US companiesrequests against data.sec.govFree; at most 10 requests per second and a User-Agent with your contactReported financials, not prices
Read moreShow less

Sources, checked October 27, 2026 (Alpha Vantage's limits and outputsize rules re-read on its documentation and support pages that day): yfinance README, Alpha Vantage support and documentation, Alpaca market data, Polygon.io stocks plans, Twelve Data pricing, SEC EDGAR APIs and its fair access policy. Financial Modeling Prep's pricing page did not load for our check. Vendors change their plans, so check before you build.

Which one for what:

  • The default, and any app you will maintain: Alpaca's free plan, an official API with the alpaca-py SDK.
  • Learning, notebooks, a personal dashboard: yfinance (unofficial) or Alpaca.
  • Live US prices in an app: Alpaca. The free plan streams IEX quotes only; the $99/month plan covers all US exchanges.
  • End-of-day history for US stocks: Polygon.io's free plan (5 calls a minute, 2 years).
  • Fundamentals and simple scripts: Alpha Vantage (25 free requests a day, the latest 100 days per daily call) or Financial Modeling Prep.
  • A few symbols across several markets: Twelve Data's free plan (800 credits a day).
  • Reported financials of US companies: SEC EDGAR, free and official.
  • Fields no API returns: scrape the public page, as in the sections below.

Prices with yfinance (unofficial: it reads Yahoo's own endpoints and breaks when Yahoo changes them):

Python
# pip install yfinance
import yfinance as yf

hist = yf.Ticker("AAPL").history(period="1mo")        # daily Open, High, Low, Close, Volume
print(hist[["Close", "Volume"]].tail())
prices = yf.download(["AAPL", "MSFT"], period="5d")   # several tickers in one call

Daily bars with Alpaca (free keys from an Alpaca account; feed=DataFeed.IEX keeps the request inside the free plan):

Python
# pip install alpaca-py
from datetime import datetime
from alpaca.data.historical import StockHistoricalDataClient
from alpaca.data.requests import StockBarsRequest
from alpaca.data.timeframe import TimeFrame
from alpaca.data.enums import DataFeed

client = StockHistoricalDataClient("<api_key>", "<secret_key>")
request = StockBarsRequest(symbol_or_symbols=["AAPL", "MSFT"], timeframe=TimeFrame.Day,
                           start=datetime(2026, 9, 1), feed=DataFeed.IEX)
print(client.get_stock_bars(request).df.tail())    # open, high, low, close, volume per symbol and day

Prices with Alpha Vantage (free key: 25 requests a day; the demo key works only for the documentation's IBM examples):

Python
import requests

r = requests.get("https://www.alphavantage.co/query", timeout=30, params={
    "function": "TIME_SERIES_DAILY", "symbol": "IBM", "apikey": "demo",   # your free key for other symbols
    "outputsize": "compact"})            # latest 100 days on a free key; "full" (25+ years) needs a premium key
series = r.json()["Time Series (Daily)"]
day = max(series)                                     # dates are ISO strings, so max() is the latest
print(day, series[day]["4. close"])

Filings from EDGAR, with no proxy and a User-Agent that names you:

Python
import requests

headers = {"User-Agent": "Example Research [email protected]"}      # the SEC asks for a contact
cik = "0000320193"                                                  # Apple Inc.
facts = requests.get(f"https://data.sec.gov/api/xbrl/companyfacts/CIK{cik}.json",
                     headers=headers, timeout=30).json()
revenue = facts["facts"]["us-gaap"].get("Revenues") or facts["facts"]["us-gaap"].get(
    "RevenueFromContractWithCustomerExcludingAssessedTax")
print(facts["entityName"], (revenue or {}).get("units", {}).get("USD", [])[-1:])

Scraping is the route for what these sources lack: fields only a portal's page shows, company pages and alternative data. Market prices also come with licences: exchanges license their data, free portals often show delayed quotes, and republishing exchange data needs a licence, so for trading decisions buy a licensed feed. Google Sheets' GOOGLEFINANCE function is the official way to pull Google Finance quotes into a sheet.

Before you start: restricted categories and official sources

ProxyField's acceptable use policy allows collecting public web data: public pages only, and follow each site's terms. Some site categories are restricted to protect the network, including financial and government services.

Public quotes and statistics may be collected; bank and payment accounts are restricted.

The market-data APIs and EDGAR in stock prices in Python need no proxy at all. Alternative data from store, job and review pages is ordinary public web data.

Public financial data you can collect

The Web Scraping API fetches any public URL and returns the page; your parser reads the numbers. ProxyField sells no separate financial data API with pre-parsed fields. Public quotes and statistics on finance portals may be collected; take EDGAR from its own APIs.

SourcePublic pagesTypical fields
Finance portals (Yahoo Finance, Google Finance, Nasdaq.com)Quote, historical prices, statistics, financial statements, news listsPrice, change, volume, market cap, P/E, dividend, 52-week range, daily history
Company investor-relations sitesPress releases, presentations, results tablesReported figures, dates, guidance text
SEC EDGAR (use its APIs)Filings and company facts10-K and 10-Q data, filing dates, XBRL facts
Crypto and FX pagesPrice tables, market listsPrice, volume, market cap
Alternative dataPrices on store pages, job listings, reviews, web traffic signalsWhatever the public page shows

The API returns the page itself as HTML, Markdown or plain text, or a JSON envelope with the status code, the final URL, the headers, the cookies and the content; it has no parsed financial fields, so your parser reads them.

How it works

How the Web Scraping API fetches a finance page

You send the page's URL and choose plain HTTP or JS rendering; the API returns the page. The example fetches a store page for alternative data. Access is through Contact sales: the API is in development, and this is its published design. It takes a POST to https://api.proxyfield.io/v1/scrape with your API key in an Authorization: Bearer <api_key> header and a JSON body: url, render (false for plain HTTP, true for JS rendering), country and output (html, markdown, text or json). For charts, tables and screeners that fill in by script, wait_for takes a CSS selector to wait for before the rendered page is returned. Parameter reference: API documentation.

Shell
# The request the Web Scraping API takes (access through Contact sales); here, alternative data from a public store page
curl https://api.proxyfield.io/v1/scrape \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.example.com/product/12345", "render": false, "country": "us", "output": "json"}'

Example response (shortened; content is the page's HTML):

JSON
{
  "metadata": {"id": "req_b74e0c95a2d816f3", "api": "web_scrape", "status": "success", "billed": true},
  "status_code": 200,
  "final_url": "https://www.example.com/product/12345",
  "content_type": "text/html; charset=utf-8",
  "content": "<!doctype html><html lang=\"en\" dir=\"ltr\">…</html>"
}
ModePrice per 1,000 successful resultsUse it for
Plain HTTP$0.50, from $0.20 at volumeQuote and statistics pages that carry their numbers in the HTML
JS rendering$2.00, from $1.00 at volumeCharts, tables and screeners that fill in by script
Pricing

Pricing: $0.50 per 1,000 pages, from $0.20

You pay only for successful results. The volume price starts at 10,000 successful results in one purchase, so the last row pays the entry price unless you buy several months at once.

Billed: the page the site returned, including a target's 404 or 410 and a sign-in page the site serves with a 200 status. Not billed: error responses, blocked and timed-out requests, and our internal retries. Every response says whether it was billed. Contact sales through the sales team on our 24/7 live chat.

Payment and balance for the API: the same crypto balance as proxies, which never expires; there is no subscription or monthly fee. All prices: pricing.

Through the sales team on our 24/7 live chat

Workload (30-day month, 21 trading days)
Workload (30-day month, 21 trading days), Pages a month, HTTP $0.50, HTTP $0.20, JS $2.00, JS $1.00
Workload (30-day month, 21 trading days)Pages a monthHTTP $0.50HTTP $0.20JS $2.00JS $1.00
500 tickers, every hour of a 7-hour trading day73,500$36.75$14.70$147$73.50
2,000 tickers, once after the close42,000$21$8.40$84$42
3,000 tickers' statistics pages, once a month3,000$1.50–$6–

When finance sites block scrapers

Finance portals throttle repeated requests: a polling loop from one IP soon gets HTTP 429 "Too Many Requests", or an error page instead of the quote, and visitors in the EU may see a cookie banner page first. Poll no faster than the data changes, spread tickers over rotating residential IPs, send browser headers, and check each page for a price before you store it. With the Web Scraping API you pay only for successful results. More on the error itself: 429 Too Many Requests.

Your own scraper instead of the API. For the alternative data on store and job pages, your own scraper can run on ProxyField residential proxies: 412M+ residential IPs in 195+ countries, targeting by country, region (state) and city, and a new IP on every request or a sticky session from 30 s to 36 h. They cost $2.95/GB for 1 GB and from $1.95/GB at volume, and you can start with the Easy Trial: 1 GB for $2.95, no subscription. The traffic never expires, and all purchases are final.

Use cases

What teams use financial web data for

  • Research datasets prices, ratios and dividends for a universe of stocks, refreshed on a schedule.
  • Monitoring price moves, news lists and investor-relations releases for a watchlist.
  • Alternative data product prices, job postings and reviews as signals about companies, collected from their public pages.
  • Fintech product checks what public sites show for the instruments your app covers.
More scrapers

More scrapers

FAQ

Financial Data Scraper FAQ

24/7 support by live chat, including help with setup and integration.

What is a financial data scraper?

ProxyField's financial data scraper is its Web Scraping API used on public market pages, at $0.50 per 1,000 successful results, or $0.20 from 10,000 results in one purchase, with access through Contact sales. Some site categories are restricted to protect its network, including financial and government services. In general, a financial data scraper collects prices, ratios, statements and news from public websites into a dataset, where no official API covers them.

Yahoo Finance has no official API, so where can I get stock prices in Python?

Start with Alpaca's free market-data plan, an official API: its alpaca-py SDK gives real-time IEX prices and 200 historical calls a minute, with all US exchanges on its $99/month plan. Alpha Vantage gives a free key with 25 requests a day and the latest 100 days per daily call; Polygon.io's free plan has end-of-day data at 5 calls a minute. For personal research, the free yfinance library returns Yahoo history in one line, yf.Ticker("AAPL").history(period="1mo"), but it is unofficial and breaks when Yahoo changes its site. Take filings from SEC EDGAR's free APIs, and scrape only the fields none of these give you.

What financial data can be scraped?

Public quote and statistics pages give prices, changes, volume, market cap, ratios, dividends and daily history; investor-relations sites give results and releases; store, job and review pages give alternative data. Company filings are better taken from the SEC's EDGAR APIs than scraped.

Does ProxyField allow scraping of financial websites?

ProxyField allows collecting public web data: public pages only, following each site's terms. Some site categories are restricted to protect the network, including financial and government services: public quotes and statistics may be collected, while bank and payment accounts are restricted. Market-data APIs and SEC EDGAR need no proxy, and store, job and review pages used as alternative data are ordinary public web data.

How do I start scraping financial data?

List the instruments and fields you need, check whether an official source covers them, such as EDGAR for filings, and scrape only what is left. Test a handful of pages, write a parser that checks every page for a price, then schedule it at the pace the data changes.

Will I get blocked when scraping financial data?

Often, if you poll fast: finance portals answer repeated requests from one IP with HTTP 429 or error pages, and EU visitors may get a cookie banner page first. Poll no faster than the data changes, spread tickers over rotating residential IPs and send browser headers.

Can I scrape financial data without writing code?

Yes: Google Sheets' GOOGLEFINANCE function returns quotes and price history for many tickers in a cell, and Excel has its own stock data type. For fields those tools lack, you need a scraper or an automation tool with an HTTP step.

Do finance sites need JavaScript rendering to scrape?

Quote and statistics pages often carry their numbers in the HTML, so try plain HTTP at $0.50 per 1,000 successful results first. Interactive charts, screeners and some tables fill in by script and need JS rendering, at $2.00 per 1,000.

Can I scrape financial data from a specific country?

Most portals list tickers from many exchanges, often with a suffix for the exchange, and some show a different page view by country. ProxyField has residential IPs in 195+ countries with country, region and city targeting; some site categories are restricted to protect the network, including financial and government services.

What's the rate limit for scraping financial data?

The SEC asks EDGAR users to stay under 10 requests per second and to name themselves in the User-Agent. Most portals publish no limit and throttle traffic that looks automated, so keep each IP slow and poll no faster than prices change.

Show 10 more questionsShow fewer questions

What is the best site to scrape stock data from?

ProxyField recommends official sources first: EDGAR for filings and a licensed feed for prices you trade on. Scrape public portals only for fields those lack; ProxyField's Web Scraping API costs $0.50 per 1,000 pages, and financial and government services are among the site categories restricted on its network. Among portals, choose the one whose pages carry your fields in the HTML and whose terms fit your use.

How do I scrape Google Finance with Python?

Fetch the quote page, such as google.com/finance/quote/AAPL:NASDAQ, with requests and read the price from the page with Beautiful Soup; Google changes the markup without notice, so check the attribute your parser reads against the live page. For quotes in a sheet, Google Sheets' GOOGLEFINANCE function is the official route. Financial services are among the site categories restricted on ProxyField's network.

How do I scrape Yahoo Finance with Python?

Most people use yfinance, an open-source library (Apache-2.0) that reads Yahoo's own endpoints: pip install yfinance, then yf.Ticker("AAPL").history(period="1mo"). The other way is to fetch the quote and history pages and parse them. Both are unofficial and break when Yahoo changes its site, and Yahoo throttles fast polling, so keep requests slow.

Is the Yahoo Finance API still available?

Not officially: Yahoo closed its public finance API in 2017. Libraries such as yfinance still return Yahoo data by reading the website's own endpoints, can stop working whenever Yahoo changes them, and are meant for research and personal use. For an app, use a documented market-data API such as Alpha Vantage or Alpaca.

How do I scrape Nasdaq data?

Nasdaq.com quote and historical-data pages load their numbers from the site's own data requests, so either render the page or read those requests the page makes. For prices you redistribute or trade on, Nasdaq sells licensed data instead.

Can I scrape real-time stock data?

You can poll public quote pages, but free portals often show delayed quotes and exchange data is licensed, so scraped prices are not a real-time trading feed. For real-time trading, buy a licensed feed and keep scraping for research and monitoring.

Does Simply Wall St have an API for stock data?

We found no public self-serve API for Simply Wall St's analysis, and much of it sits behind an account, which a scraper should not log into. The underlying company figures come from filings, which EDGAR's free APIs provide for US companies.

Where can I find historical financial data?

Daily price history is on the history pages of the big portals and in Google Sheets' GOOGLEFINANCE; filings and reported figures for US companies are in EDGAR. Long, clean histories with corporate actions applied come from paid data vendors.

What is alternative financial data?

Data about companies from outside their filings and price feeds: product prices on store pages, job postings, reviews, app rankings and similar public signals. Scrapers collect it from the public pages where it appears.

What can go wrong when scraping stock data?

Delayed or stale quotes stored as live ones, parsers that silently read the wrong number after a layout change, blocked runs that leave gaps, and terms or licences that forbid reuse. Validate every value, store the time you read it, and check the source's terms.

Start collecting public pages with the Web Scraping API

Billed on successful results only. Contact sales for the Web Scraping API and the volume you need, or run your own scraper on residential proxies. 24/7 live chat helps with setup and integration.