Coinbase Scraper avatar

Coinbase Scraper

Pricing

from $1.00 / 1,000 records

Go to Apify Store
Coinbase Scraper

Coinbase Scraper

Extract live Coinbase Exchange prices for any product with no API key or OAuth: last trade, best bid and ask, 24h high, low and base volume, and the exchange timestamp, off the order book. 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

Coinbase runs two different APIs, the retail one and Coinbase Exchange, and the docs send you to a key and an OAuth flow before you get a price. This Actor reads the public Coinbase Exchange ticker for any product and returns one structured record: last trade, best bid and ask, 24h high, low and base volume, and the exchange timestamp.

What it does

  • Returns one record per requested product, in order. A product Coinbase does not list comes back with status: "failed" and a reason.
  • Reads Coinbase Exchange, the institutional venue, rather than the retail app, so the prices are the ones the order book actually traded at.
  • Keeps both names: requested is what you asked for (BTC/USD) and symbol is Coinbase's product id (BTC-USD).
  • Quotes in USD, EUR and GBP for the products Coinbase lists in them, so fiat pairs need no stablecoin hop.
  • Needs no API key and no OAuth. The public product ticker is unsigned.
  • Stamps every record with validFrom, Coinbase's own exchange time for that tick.

Use cases

You need toHow this Actor does it
Price a portfolio in fiatPass BTC/USD or ETH/EUR and read value directly
Watch the spread on a pairSubtract bid from ask on each run and alert on a widening book
Compare venues for the same pairRun this next to the Binance, Bybit, OKX or Kraken Actor and diff value at validFrom
Mark a US-facing bookCoinbase is the reference venue for many US desks, so use it as the benchmark price
Feed a trading agentCall the Actor over MCP and let the model ask for the product it needs
Build your own candlesSchedule the run and let the dataset accumulate one row per product per run

Quick start

  1. Click Try for free.
  2. Add your products, one per line, as BASE/QUOTE: BTC/USD, ETH/EUR, SOL/USD. Coinbase writes them with a hyphen and the Actor converts.
  3. Click Start. Rows appear within seconds.
  4. Export as JSON, CSV, Excel or XML, or read the dataset over the API.

Input

FieldTypeDefaultWhat it controls
pairsarrayBTC/USD, ETH/USDTrading pairs to read, written BASE/QUOTE. Slashes are optional and case does not matter.
maxItemsinteger0Caps how many products are read. 0 reads them all
{
"pairs": [
"BTC/USD",
"ETH/USD",
"SOL/USD"
],
"maxItems": 0
}

Output

One dataset item per product. Fields Coinbase does not publish are dropped rather than returned as null.

Field groupFields
Identitystatus, requested, symbol, currency, url
Pricevalue, bid, ask
24 hour windowhigh24h, low24h, baseVolume24h
TimingvalidFrom, scrapedAt
{
"status": "ok",
"requested": "BTC/USD",
"symbol": "BTC-USD",
"currency": "USD",
"value": 104211.55,
"bid": 104211.4,
"ask": 104211.55,
"high24h": 106488.0,
"low24h": 103104.2,
"baseVolume24h": 4188.92,
"validFrom": "2026-09-04T20:00:01.000Z"
}

Integrations

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

curl -X POST "https://api.apify.com/v2/acts/publicmoney~coinbase-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"pairs": ["BTC/USD", "ETH/USD", "SOL/USD"], "maxItems": 0}'

From Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("publicmoney/coinbase-scraper").call(run_input={"pairs": ["BTC/USD", "ETH/USD", "SOL/USD"], "maxItems": 0})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["symbol"], item["value"], item["validFrom"])

Give an AI agent the Actor over MCP:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?actors=publicmoney/coinbase-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
One pair returns failed, the rest are fineThat pair is not listed on this exchange, or the quote asset is wrong. Check it on the exchange first.
symbol does not match what I sentBy design. requested is your input and symbol is Coinbase's product id, so BTC/USD becomes BTC-USD.
A product is on the Coinbase app but fails hereThe retail app lists assets that Coinbase Exchange does not trade. This Actor reads the Exchange venue.
Prices differ from the Coinbase appThe app shows retail pricing with its own spread. Exchange prices are the order book.
value looks behind another exchangeRead validFrom. It is the exchange's own timestamp for that tick, so two venues legitimately differ. Prices are spot, not aggregated.

FAQ

Does the Coinbase API need an API key?

The retail and Advanced Trade APIs do, and some flows need OAuth. The public Coinbase Exchange product ticker does not, which is what this Actor reads.

Which Coinbase does this read, the app or the exchange?

Coinbase Exchange, the institutional venue. Its prices come off the order book rather than carrying the retail spread, so they differ from the consumer app.

Is this the real-time Coinbase price?

It is the last trade Coinbase published at validFrom, read live on each run. It is not a stream, so for tick-by-tick data use a websocket. For a price every minute or every hour, schedule the Actor.

Does it return Coinbase candles or historical prices?

No. Each record is the current ticker. To build a series, schedule the Actor and let the dataset accumulate one row per pair per run, each stamped with validFrom.

Can I price in EUR or GBP?

Yes, for the products Coinbase lists in that fiat.

Do I need a Coinbase API key?

No. You need an Apify token to call the Actor over the API. No Coinbase 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 Coinbase 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 the 24h high and low next to volume.
  • 0.0.1 First release. Product ticker for any listed product.

Feedback

Found a field Coinbase 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.