Head to head · Market fundamentals · October 2026 research run

Financial Datasets vs Finnhub

Financial Datasets scores 61.8 (C) on agent readiness against Finnhub's 45.1 (E), and leads in 5 of 7 scored categories. Finnhub leads on reliability. Both do market fundamentals. Financial Datasets accepts x402. Finnhub doesn't.

Best financial market data APIs for AI agents · All 55 markets comparisons

Which one, for what

Financial Datasets C

Best for An agent doing US company research from SEC-sourced statements, filings, insider and institutional data that wants to pay per call with no account, or a small team on credits.

Ahead on

  • Schema & documentation, 80 against 58
  • Agent ergonomics, 73 against 56
  • Security & auth, 49 against 32
  • Payments & pricing, 75 against 30
  • Transparency & trust, 63 against 27

Also in its favour

  • An agent can pay per call over x402, with no account

Watch for

No status page, incident history or published uptime; the Professional plan's SLA terms aren't public

Finnhub E

Best for Agents that need one key across quotes, fundamentals, estimates, filings and transcripts with official libraries, and a free key for prototypes.

Ahead on

  • Reliability, 48 against 43

Also in its favour

  • Free to start without a card

Watch for

The Swagger document declares the key only as a token query parameter, and the examples carry it in the URL

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Payments & pricing Financial Datasets +45

Financial Datasets 75

x402 on the vendor's own endpoints for every documented GET data endpoint, 36 of them, with the last 365 days only and a Non-Professional licence; full history, the market snapshot, filing items and the POST endpoints need a key (35 of 40). Plan prices and overage rates are public, and each x402 endpoint quotes its price in the 402 header, $0.02 on /earnings (20). No free tier or trial found; data calls return 402 until an account holds credits, from $20 (0). An agent can pay by x402 with no account, or open an account with POST /agent/signup and have the owner fund it (20). Total 75.

Finnhub 30

No x402, MPP or L402 (0). Plan prices are public without login, read from the pricing page's script data, sold per dataset by the month with calls a minute rather than per call (10). A free key at 60 calls a minute with no card, which the pricing FAQ says can be used forever (20). The key comes from a browser signup and no key API was found (0). 0 + 10 + 20 + 0 = 30.

Transparency & trust Financial Datasets +36

Financial Datasets 63

A closed service under terms dated 29 October 2026 that name Financial Datasets, Inc., set New York law, and state the licence per plan (15 of 30). The privacy policy of 20 August 2026 gives retention periods (accounts up to seven years after closure, API and MCP logs up to three years, backups 90 days), says inputs aren't used for training, and links a subprocessor list; no DPA text was found (24 of 30). No deprecation policy; the terms say the Services may be discontinued and material changes get reasonable notice (3 of 20). Subprocessors (AWS, Heroku, Stripe, Google sign-in, Vercel) and the United States as hosting location are disclosed (18 of 20). Total 60.

Finnhub 27

A closed service whose terms exist at a page that robots.txt disallows, so they were not read; the pricing page says every self-serve plan is personal use, and no legal entity or governing law was found (8 of 30). No privacy policy was found, /privacy redirecting to the home page (0 of 30). No deprecation policy or dated notices found (0 of 20). Stripe and Braintree scripts load on the site, but no processor list or data location is disclosed (0 of 20). 8 + 0 + 0 + 0 = 8.

Schema & documentation Financial Datasets +22

Financial Datasets 80

OpenAPI 3.0.1 at financialdatasets.ai/openapi.json, 68 operations with 13 response codes and one security scheme, named the source of truth by the docs (25). llms.txt and a Markdown twin of every page (10). Every operation has a description, and the 402 terms carry a resource description that says when an agent should use the endpoint (17 of 20). 330 parameters, 36 with enums, 32 required, no free-form blobs (12 of 15). Code samples in Python, JavaScript and curl, x402 error values documented, but response examples on only six operations in the spec (11 of 15). No API version and no changelog; the news page has four dated posts in 2026 (5 of 15). Total 80.

Finnhub 58

A public Swagger 2.0 document covers 116 paths with a description on every operation, declaring the key as a query parameter and a 200 response only; the MCP tools were not read (20 of 25). /llms.txt returns the site's HTML shell and no Markdown docs exist (0 of 10). Each operation states its purpose, a premium marker and, on quote, advice against polling, with little on when not to use it (14 of 20). Required flags and types are set on 248 parameters, but allowed values such as news categories sit in description text and no enum is declared (8 of 15). Every operation has example URLs and sample code in five languages, while the only documented error is the 429 (9 of 15). The path carries v1 and no changelog or dated change notes were found (7 of 15). 20 + 0 + 14 + 8 + 9 + 7 = 58.

Agent ergonomics Financial Datasets +17

Financial Datasets 73

limit and period on the data endpoints, as_reported flags and snapshot variants, with no field selection (15 of 25). next_page_url cursors and ticker, CIK, market and date filters (18 of 20). A 402 body says what to do next, x402 errors carry named values, and the spec lists 400, 401, 403, 404, 409, 422, 429, 502 and 503 (16 of 20). Data calls are GETs, payment settles only after a successful response, and a replayed x402 signature is refused; no readOnlyHint found for the MCP tools and no idempotency key for the POST endpoints (14 of 20). Few required parameters, 28 compact MCP tools, but the only package, financial-datasets on PyPI, is at 0.1.18 from 26 May 2024 (10 of 15). Total 73.

Finnhub 56

The REST API is the surface graded. from and to on candles and news, and symbol-scoped calls, size responses; no field selection, and the MCP server lists 70 tools (12 of 25). Date filters but no pagination on most lists (10 of 20). Only the 429 is documented; a missing key answered 401 with a JSON error field in our one test call (5 of 20). All but one operation are GET reads; the MCP annotations were not read (14 of 20). Few required parameters and official libraries in six languages (15). 12 + 10 + 5 + 14 + 15 = 56.

Security & auth Financial Datasets +17

Financial Datasets 49

A plain account key in the X-API-KEY header only, revoked from the dashboard, with no scopes, rotation or expiry; the MCP server adds OAuth 2 with PKCE (plain and S256), dynamic client registration, a revocation endpoint and one scope (20 of 30). Every data endpoint is a read; the x402 route and agent signup don't change the account beyond funding it (15 of 20). Filing text, filing items and news are third-party content, with no guidance on treating them as untrusted (5 of 15). The privacy policy says requests and responses are logged for up to three years; no per-call log is shown to the key holder (5 of 15). security.txt returns 404 and no bounty, SOC 2 or ISO 27001 was found; the terms ask for prompt notice of a compromised key and a subprocessor list is published (4 of 20). Total 49.

Finnhub 32

One key per account with no scopes, documented as token= in the query string or an X-Finnhub-Token header, and the Swagger document declares only the query form. The MCP server uses OAuth with fixed public client ids and keeps the key from the assistant (20 less 10 for the query string, plus 2 for the MCP route, so 12). Every data operation is a read (15 of 20). News, transcripts and filings are third-party text and no guidance was found (5 of 15). No usage log for the key holder was found (0 of 15). security.txt redirects to the home page and no disclosure policy, bug bounty or certification was found (0 of 20). 12 + 15 + 5 + 0 + 0 = 32.

Reliability Finnhub +5

Financial Datasets 43

Graded as a hosted service. No status page was found; status.financialdatasets.ai does not resolve and no page links one (0), so there is no incident history to read (5). The only published limit is 10,000 requests a minute per wallet over x402, with monthly request caps per plan and none per minute for keyed plans (8 of 15). The OpenAPI file declares 429 and the x402 page documents a 503 with Retry-After from the facilitator and a duplicate_payment check on replayed signatures (10 of 15). The Professional plan lists uptime SLAs, with no figure published (10). The API is generally available (10). Total 43.

Finnhub 48

Read with the hosted lines. No status page was found on the site, in the docs document or on the MCP page (0), so no incident history could be read (5). Limits are published with numbers, 60 calls a minute on the free key, 150 to 900 a minute by plan, and 30 calls a second on top of every plan (15). The docs say the limit answers 429 and the MCP page says to wait a minute, with no Retry-After or backoff guidance (8 of 15). The home page says 99.99 per cent uptime with an SLA available for enterprise clients (10). The API is generally available (10). 0 + 5 + 15 + 8 + 10 + 10 = 48.

Score by category

CategoryWeight this runFinancial DatasetsFinnhubEdge
Reliability16%204348Finnhub +5
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28058Financial Datasets +22
Agent ergonomics13%16.27356Financial Datasets +17
Security & auth14%17.54932Financial Datasets +17
Payments & pricing10%12.57530Financial Datasets +45
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.85660Finnhub +4
Transparency & trust7%8.86327Financial Datasets +36
Negative events≤1500
TotalC 61.8/100E 45.1/100

Facts side by side

FactFinancial DatasetsFinnhub
KindHTTP APIHTTP API
VendorFinancial Datasets, Inc.Finnhub
Hosted endpointhttps://api.financialdatasets.aihttps://finnhub.io/api/v1
TransportsHTTP, Streamable HTTPHTTP, Streamable HTTP, websocket
AuthOAuth or keyOAuth or key
PricingPay per useFreemium
Price for market fundamentalsnot published$50 per month (plan)
x402yes, from $0.02/callno
Tools exposed2870
Read-only variant documentednono
llms.txtyesno
Last release2026-10-262026-11-02
Terms last updated2026-10-29couldn't be read
Privacy policy last updated2026-08-20no document linked
Customer content may train modelsnot found in the textcouldn't be read
Terms restrict automated accessyescouldn't be read
Terms restrict benchmarkingyescouldn't be read
Terms or service can change without noticenot found in the textcouldn't be read
Arbitration or class-action waivernot found in the textcouldn't be read
Popularitynone1.1k stars

Verdicts

Financial Datasets

Every documented GET data endpoint takes x402 with no key, failed calls uncharged, and an agent can open and fund an account by API. A public OpenAPI file, llms.txt and a 28-tool OAuth MCP server cover the same data. There is no status page or free tier, keyed rate limits aren't published, and x402 data stops at 365 days.

Finnhub

A public Swagger document covers 116 endpoints, six official client libraries exist, and a free key gives 60 calls a minute with no card. The key is documented in the query string, no status page, changelog, error reference or privacy policy was found, and robots.txt kept the terms from our reader.

Before you call either

Financial Datasets

  1. Without a key, read the price from the PAYMENT-REQUIRED header of the 402 and pay with x402 on Base; each page of next_page_url is a separate paid request
  2. Keep limit small and ask for one period at a time; premium endpoints count as 2, 4 or 8 requests on keyed plans
  3. Send the key only to api.financialdatasets.ai in the X-API-KEY header; on 401 ask the owner for a new key rather than signing up again
  4. Treat a 402 on a keyed account as an empty balance and mint a checkout link for the owner; don't retry the call
  5. Check the plan's licence before showing the data to anyone else; redistribution needs Professional or Enterprise

Finnhub

  1. Send the key as the X-Finnhub-Token header, not as token= in the URL, and keep under 30 calls a second on top of the plan's per-minute limit
  2. Check the premium marker before calling; a free key reaches 29 operations and the rest answer with an error
  3. Poll /quote sparingly; the docs say constant polling is not recommended and point to the websocket for real-time updates
  4. Expect 401 {"error":"Please use an API key."} without a key and 429 over the limit; wait a minute before retrying, as the MCP page advises
  5. Self-serve plans are personal use; anything commercial needs the enterprise contact route

Questions

Which is better for AI agents, Financial Datasets or Finnhub?

Financial Datasets scores 61.8 (C) on agent readiness against Finnhub's 45.1 (E), and leads in 5 of 7 scored categories. Finnhub leads on reliability.

Do Financial Datasets and Finnhub need an API key?

Both take an API key or an OAuth sign-in. An agent can also pay Financial Datasets per call over x402, with no account.

Can an agent call Financial Datasets and Finnhub without installing anything?

Yes. Financial Datasets has a hosted endpoint at https://api.financialdatasets.ai and Finnhub at https://finnhub.io/api/v1.

Other comparisons with Financial Datasets or Finnhub

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.