FT Markets Scraper avatar

FT Markets Scraper

Pricing

from $1.00 / 1,000 records

Go to Apify Store
FT Markets Scraper

FT Markets Scraper

Extract Financial Times tearsheets for listings worldwide: price, day and 52-week range, bid and offer, average volume, shares outstanding, free float, market cap, PE and EPS, in local currency. Export data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $1.00 / 1,000 records

Rating

5.0

(1)

Developer

Public Money

Public Money

Maintained by Apify

Actor stats

1

Bookmarked

4

Total users

3

Monthly active users

21 hours ago

Last modified

Categories

Share

US-focused sources stop at US listings, and a London, Frankfurt or Tokyo ticker returns nothing. The Financial Times tearsheet covers exchanges worldwide, and this Actor reads it: price, day range, bid and offer, average volume, shares outstanding and free float, PE and EPS, for any instrument the FT lists, addressed in its own SYMBOL:EXCHANGE form.

What it does

  • Covers listings worldwide, not just the US, which is the reason to reach for this over the other equity Actors in this fleet.
  • Returns one record per instrument, in order. An instrument the FT does not list comes back with status: "failed" and a reason.
  • Carries free float alongside shares outstanding, so you can see how much of a company actually trades.
  • Reports bid and offer next to the last price, which many tearsheet sources omit.
  • Gives the key figures twice: as the FT prints them and as numbers you can sort on (marketCapNumeric, pETtmNumeric).
  • Takes instruments in the FT's own SYMBOL:EXCHANGE form, so a cross-listed ticker is unambiguous.

Use cases

You need toHow this Actor does it
Price a non-US listingPass SHEL:LSE or 7203:TYO and read value with its own currency
Cover a global portfolio in one runMix US, European and Asian instruments in the same list
See how much of a company tradesCompare freeFloat against sharesOutstanding
Watch the spread on a thin listingSubtract bid from offer
Compare valuation across venuesRead pETtmNumeric for the same company on two listings
Feed a finance agentCall the Actor over MCP and let the model ask for the symbol it needs

Quick start

  1. Click Try for free.
  2. Add your instruments, one per line, in the FT's SYMBOL:EXCHANGE form: AAPL:NSQ, SHEL:LSE, BMW:GER. The exchange code is the FT's own, so NSQ is Nasdaq.
  3. Find an instrument's exact code by searching it on the FT markets site and reading it off the tearsheet URL.
  4. Click Start. Rows appear within seconds.
  5. Export as JSON, CSV, Excel or XML, or read the dataset over the API.

Input

FieldTypeDefaultWhat it controls
instrumentsarrayAAPL:NSQInstruments to read, in the FT's SYMBOL:EXCHANGE form
maxItemsinteger0Caps how many instruments are read. 0 reads them all
{
"instruments": [
"AAPL:NSQ",
"SHEL:LSE",
"BMW:GER"
],
"maxItems": 0
}

Output

One dataset item per instrument. Fields the FT does not publish for an instrument are dropped rather than returned as null, and each record carries its own currency because a global list mixes them.

Field groupFields
Identitystatus, tickerSymbol, name, exchange, currency, url
Pricevalue, change, changePercent, open, previousClose, bid, offer
Ranges and volumedayLow, dayHigh, fiftyTwoWeekLow, fiftyTwoWeekHigh, avgVolume
Share structuresharesOutstanding, freeFloat, marketCap, marketCapNumeric
ValuationpETtm, pETtmNumeric, epsTtm, dividendYieldPercent
TimingvalidFrom, scrapedAt
{
"status": "ok",
"tickerSymbol": "SHEL:LSE",
"name": "Shell PLC",
"exchange": "London Stock Exchange",
"currency": "GBX",
"value": 2884.5,
"change": -18.0,
"changePercent": -0.62,
"open": 2901.0,
"previousClose": 2902.5,
"bid": 2884.0,
"offer": 2885.0,
"dayLow": 2871.5,
"dayHigh": 2906.0,
"avgVolume": 8412006,
"sharesOutstanding": 5884000000,
"freeFloat": 5871200000,
"marketCap": "169.72bn",
"marketCapNumeric": 169720000000,
"pETtm": "12.44",
"pETtmNumeric": 12.44,
"validFrom": "2026-09-04T16:35:00.000Z",
"url": "https://markets.ft.com/data/equities/tearsheet/summary?s=SHEL:LSE"
}

Integrations

Run it over the API and get the rows back in one call:

curl -X POST "https://api.apify.com/v2/acts/publicmoney~ft-markets-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"instruments": ["AAPL:NSQ", "SHEL:LSE", "BMW:GER"], "maxItems": 0}'

From Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("publicmoney/ft-markets-scraper").call(run_input={"instruments": ["AAPL:NSQ", "SHEL:LSE", "BMW:GER"], "maxItems": 0})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["tickerSymbol"], item["name"], item["value"])

Give an AI agent the Actor over MCP:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?actors=publicmoney/ft-markets-scraper"
}
}
}

Schedules run it on any cron, webhooks fire when a run finishes, and platform integrations push the dataset to Google Sheets, Slack, Airtable, Zapier or your own endpoint.

Cost

Pay per event, so you pay for records rather than compute time.

EventFree tierTop volume tier
Record with data$0.002$0.0007
Actor start$0.00005 per GBSame

A record that returned no data is published as a failure row and is never charged. Six volume tiers apply, so the per-record price falls with monthly volume.

Troubleshooting

IssueSolution
An instrument returns failedThe exchange code is wrong. The FT uses its own codes, so Nasdaq is NSQ and not NASDAQ. Search the instrument on the FT site and copy the code from the tearsheet URL.
The price looks a hundred times too largeCheck currency. London listings are quoted in pence (GBX), not pounds, so 2884.5 is 28.845 pounds.
freeFloat equals sharesOutstandingThe whole share count is freely traded, which is normal for a widely held company.
pETtm is missingThe FT publishes no trailing PE for loss-making companies and for instruments that are not equities.
A US ticker works but has fewer fields than elsewhereThe FT tearsheet is thinner on US listings than a US-native source. For US tickers the StockAnalysis or Finviz Actor returns more.

FAQ

Does the Financial Times have a markets API?

No. The FT publishes no documented public API for this data. The endpoints that libraries reach for are internal and unsupported, and they change without notice. This Actor reads the public markets tearsheet, which is why it keeps working.

Why use this instead of the other equity Actors?

International coverage. The Yahoo, Nasdaq, CNBC, Finviz and StockAnalysis Actors are strongest on US listings, while the FT tearsheet covers exchanges worldwide, so a London, Frankfurt or Tokyo listing works here.

What is the SYMBOL:EXCHANGE format?

The FT's own instrument id, made of the ticker and its exchange code: AAPL:NSQ, SHEL:LSE, BMW:GER. The codes are the FT's, not the exchange's own, so copy them from a tearsheet URL.

Why is a London price in the thousands?

London equities are quoted in pence, and the currency field says GBX rather than GBP. Divide by 100 for pounds.

Does it return historical prices?

No. Each record is the current snapshot as the source publishes it. To build a series, schedule the Actor and let the dataset accumulate a row per input per run. Each row carries validFrom, so the series is correctly timestamped.

Do I need a FT Markets API key?

No. You need an Apify token to call the Actor over the API. No FT Markets credential is involved anywhere.

Can I get this data in Python?

Yes, with the apify-client package as shown above. It returns parsed JSON, so there is no HTML or response handling on your side.

Can I get the data into Excel or Google Sheets?

Yes. Export the dataset as XLSX or CSV, or connect the Google Sheets integration so each run appends to a sheet.

Can an AI agent call this Actor?

Yes. Add it to an MCP client with the config above and the model can request what it needs on its own. Every record is flat JSON with named fields, so no post-processing is needed.

This Actor reads public FT Markets data that needs no login and collects no personal data. Scraping public data is generally lawful, and how you store, redistribute or act on market data is governed by your own agreements and local rules. Take your own legal advice for your use case.

Changelog

  • 0.0.2 Added free float, bid and offer, and the numeric twins for cap and PE.
  • 0.0.1 First release. The FT tearsheet for any listed instrument.

Feedback

Found a field FT Markets publishes that this Actor misses, or an input it rejects? Open an issue on the Issues tab with the input and what you expected. A daily test runs every Actor in the fleet against live sources, so parser fixes ship fast.