{
  "data": {
    "a": {
      "slug": "financial-datasets",
      "name": "Financial Datasets",
      "vendor": "Financial Datasets, Inc.",
      "vendorUrl": "https://www.financialdatasets.ai",
      "kind": "http-api",
      "category": "market-data",
      "summary": "Financial Datasets is a stock market data API built for AI agents, with financial statements, SEC filings, earnings, insider and institutional holdings, prices, news and macro series for 27,000 US tickers, through REST, x402 and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/financial-datasets",
      "markdownUrl": "https://www.anchorterminal.com/tools/financial-datasets.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/financial-datasets.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/financial-datasets.json",
      "dns": "financial-datasets.grade.anchorterminal.com",
      "repo": "https://github.com/financial-datasets",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.financialdatasets.ai",
      "packages": [
        {
          "registry": "pypi",
          "name": "financial-datasets"
        }
      ],
      "auth": "mixed",
      "authNotes": "API key in the `X-API-KEY` header, minted in the dashboard or by `POST /agent/signup` with an email and agent name, shown once. Any documented GET data endpoint also accepts x402 payment with no key. The hosted MCP server uses OAuth 2 with PKCE, dynamic client registration, a revocation endpoint and one scope, `stock-market-data`, or an `X-API-KEY` header on its /api endpoint. Keys are revoked from the dashboard; no rotation or expiry documented.",
      "pricing": "usage",
      "pricingNotes": "Credits at $20 for 1,000 requests, one-off, personal licence, one year of price history. Personal $200 a month for 100,000 requests (overage $10 per 1,000, cap 1 million). Professional $2,000 a month for 2 million requests (overage $5 per 1,000, cap 10 million) with a commercial licence, redistribution, webhooks and uptime SLAs. Enterprise by contact. Premium endpoints count as 2, 4 or 8 requests by plan. Over x402, each GET data endpoint quotes its own USDC price in the 402 response; /earnings quoted $0.02 on 3 November 2026. No free tier found.",
      "priceSummary": "$0.02 / call",
      "where": "hosted",
      "x402": {
        "level": "yes",
        "evidence": "Announced 23 October 2026. Every documented GET data endpoint (36 per the announcement) returns 402 with x402 version 2 terms in the PAYMENT-REQUIRED header, scheme exact, USDC on Base (eip155:8453), payTo 0xC45E70793C01C6Ae4336dd5a5503baC958d32403, 300-second timeout. Error responses are not charged, payment settles only after a successful response, history is limited to the last 365 days and the licence is Non-Professional. Our unauthenticated GET /earnings?ticker=NVDA on 3 November 2026 returned 402 with amount 20000 base units, $0.02 (https://docs.financialdatasets.ai/x402.md).",
        "endpoints": [
          {
            "url": "https://api.financialdatasets.ai/earnings",
            "priceUsd": 0.02,
            "network": "eip155:8453"
          }
        ]
      },
      "toolCount": 28,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.financialdatasets.ai/",
      "llmsTxt": "https://docs.financialdatasets.ai/llms.txt",
      "openapi": "https://www.financialdatasets.ai/openapi.json",
      "capabilities": [
        "market.fundamentals",
        "market.filings",
        "market.prices",
        "market.history",
        "market.news",
        "market.indices",
        "data.markets",
        "data.company"
      ],
      "tags": [
        "official",
        "hosted",
        "x402",
        "usage",
        "prepaid",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "oauth",
        "webhooks",
        "no-status-page",
        "closed-source"
      ],
      "lastRelease": "2026-10-26",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 61.8,
        "grade": "C",
        "agentReady": false,
        "rank": 534,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 56,
          "payments": 75,
          "reliability": 43,
          "schema": 80,
          "security": 49,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "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.",
        "strengths": [
          "x402 on every documented GET data endpoint (36), USDC on Base, no key or account, error responses not charged, with the price in each 402 response ($0.02 on /earnings on 3 November 2026)",
          "OpenAPI 3.0.1 with 68 operations and a description on each, llms.txt, and a Markdown twin of every docs page",
          "`POST /agent/signup` and `POST /agent/checkout-link` let an agent open and fund an account with the owner paying a Stripe link, minimum $20",
          "Hosted MCP server with 28 tools, OAuth 2 PKCE and dynamic client registration, or an X-API-KEY header on /api",
          "Privacy policy with retention periods and a dated subprocessor list, and terms that say inputs aren't used for training"
        ],
        "weaknesses": [
          "No status page, incident history or published uptime; the Professional plan's SLA terms aren't public",
          "No free tier. The cheapest route with a key is $20 for 1,000 credits, and data calls return 402 until an account is funded",
          "Rate limits for keyed plans aren't published; only x402 states 10,000 requests a minute per wallet",
          "x402 requests return only the last 365 days and are licensed for Non-Professional use; Credits and Personal plans carry the same limit",
          "No API version or changelog; the news page carries four posts in 2026, and the Python package on PyPI dates from May 2024"
        ],
        "agentNotes": [
          "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",
          "Keep `limit` small and ask for one `period` at a time; premium endpoints count as 2, 4 or 8 requests on keyed plans",
          "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",
          "Treat a 402 on a keyed account as an empty balance and mint a checkout link for the owner; don't retry the call",
          "Check the plan's licence before showing the data to anyone else; redistribution needs Professional or Enterprise"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 61.8
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 56,
          "payments": 75,
          "reliability": 43,
          "schema": 80,
          "security": 49,
          "transparency": 60
        },
        "provenanceScore": 65,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install financial-datasets",
        "http": "curl -H \"X-API-KEY: $FINANCIAL_DATASETS_KEY\" \"https://api.financialdatasets.ai/financials/income-statements?ticker=AAPL\u0026period=annual\u0026limit=4\"",
        "claudeCode": "claude mcp add --transport http financial-datasets https://mcp.financialdatasets.ai/",
        "config": {
          "mcpServers": {
            "financial-datasets": {
              "url": "https://mcp.financialdatasets.ai/"
            }
          }
        },
        "x402": "curl -i \"https://api.financialdatasets.ai/earnings?ticker=NVDA\u0026limit=4\""
      },
      "letme": {
        "capability": "https://letme.dev/market.fundamentals",
        "tool": "https://letme.dev/financial-datasets"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Earnings, over x402",
          "unit": "call",
          "usd": 0.02,
          "note": "read from the 402 response on 3 November 2026; other endpoints quote their own price"
        },
        {
          "item": "Credits pack",
          "unit": "1k-requests",
          "usd": 20,
          "note": "one-off, personal licence, one year of price history"
        },
        {
          "item": "Personal plan",
          "unit": "month",
          "usd": 200,
          "note": "100,000 requests, overage $10 per 1,000"
        },
        {
          "item": "Professional plan",
          "unit": "month",
          "usd": 2000,
          "note": "2 million requests, overage $5 per 1,000, commercial licence"
        }
      ],
      "provenance": {
        "legalEntity": "Financial Datasets, Inc.",
        "domain": "financialdatasets.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.financialdatasets.ai/terms-of-use",
        "privacy": "https://www.financialdatasets.ai/privacy-policy",
        "statusPage": "",
        "changelog": "https://www.financialdatasets.ai/news",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "Financial Datasets, Inc. is named in the terms (as of 29 October 2026, New York law), the privacy policy (last updated 20 August 2026) and the subprocessor list (29 October 2026).",
          "Terms section 5 forbids accessing the Services by automated means outside the documented API; the public website has no separate automated-access clause. robots.txt on www.financialdatasets.ai allows all crawlers and names ClaudeBot, Claude-User and Claude-SearchBot as allowed; docs.financialdatasets.ai, api.financialdatasets.ai and mcp.financialdatasets.ai carry Content-Signal ai-train=yes, search=yes, ai-input=yes.",
          "The docs, llms.txt and the 402 response carry instructions addressed to agents; none were acted on.",
          "RDAP for financialdatasets.ai was refused (403 from rdap.org), so the registration date is unchecked.",
          "/.well-known/security.txt returns 404. No status page found. The news page is the nearest thing to a changelog."
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/financial-datasets.json",
      "live": {
        "slug": "financial-datasets",
        "probe": {
          "target": "https://api.financialdatasets.ai",
          "method": "get",
          "lastAt": "2026-11-04T21:27:49.329664988Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 216,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 249,
          "p95ms24h": 711,
          "samples24h": 62,
          "samples30d": 62,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 62,
              "ok": 62
            }
          ]
        },
        "versions": [
          {
            "registry": "pypi",
            "name": "financial-datasets",
            "version": "0.1.18",
            "released": "2024-05-26",
            "seenAt": "2026-11-04T20:16:09.583331368Z"
          }
        ],
        "pypiWeekly": 40,
        "securityTxt": {
          "url": "https://financialdatasets.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:52:54.466191501Z"
        },
        "updatedAt": "2026-11-04T21:27:49.329664988Z"
      }
    },
    "answer": "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.",
    "b": {
      "slug": "finnhub",
      "name": "Finnhub",
      "vendor": "Finnhub",
      "vendorUrl": "https://finnhub.io",
      "kind": "http-api",
      "category": "market-data",
      "summary": "Finnhub is a market data API for stock quotes and candles, company fundamentals, estimates, filings, transcripts, news and alternative data, with forex, crypto and economic series. Agents call the REST API at finnhub.io/api/v1 or the hosted MCP server at mcp.finnhub.io.",
      "url": "https://www.anchorterminal.com/tools/finnhub",
      "markdownUrl": "https://www.anchorterminal.com/tools/finnhub.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/finnhub.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/finnhub.json",
      "dns": "finnhub.grade.anchorterminal.com",
      "repo": "https://github.com/Finnhub-Stock-API/finnhub-python",
      "transports": [
        "http",
        "streamable-http",
        "websocket"
      ],
      "remoteUrl": "https://finnhub.io/api/v1",
      "packages": [
        {
          "registry": "pypi",
          "name": "finnhub-python"
        },
        {
          "registry": "npm",
          "name": "finnhub"
        }
      ],
      "auth": "mixed",
      "authNotes": "One API key per account from the dashboard after a browser signup. The docs accept it as a `token=` query parameter or an `X-Finnhub-Token` header; the Swagger document declares only the query form. The hosted MCP server at mcp.finnhub.io/mcp uses OAuth with the Finnhub account and fixed client ids (`claude`, `chatgpt`) with no secret, so the assistant never sees the key. No scopes, expiry or rotation guidance found.",
      "pricing": "freemium",
      "pricingNotes": "Free key at 60 API calls a minute for personal use with no card, covering 29 of 116 documented operations; 87 are marked premium. Self-serve plans by dataset, read from the pricing page's script data, run from $49.99 a month (market data Basic, 150 calls a minute) and $50 (fundamentals) to $3,500 a month for All-In-One at 900 market data and 300 fundamental calls a minute, all personal use. Enterprise is priced by contact, with commercial use and redistribution (https://finnhub.io/pricing, checked 2026-11-03).",
      "priceSummary": "$49.99 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Swagger document, the embedded docs, the pricing script data or the MCP page (checked 2026-11-03). A call without a key returns HTTP 401 with `{\"error\":\"Please use an API key.\"}`.",
        "endpoints": []
      },
      "toolCount": 70,
      "popularity": {
        "githubStars": 1095,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://finnhub.io/docs/api",
      "openapi": "https://finnhub.io/static/swagger.json",
      "capabilities": [
        "market.prices",
        "market.fundamentals",
        "market.news",
        "market.filings",
        "market.history",
        "market.crypto",
        "market.indices",
        "data.markets",
        "data.company"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "remote-mcp",
        "openapi",
        "no-card",
        "free-tier",
        "closed-source",
        "no-status-page",
        "python",
        "go",
        "typescript",
        "ruby",
        "php",
        "stocks",
        "forex",
        "crypto",
        "personal-use",
        "sla"
      ],
      "lastRelease": "2026-11-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.1,
        "grade": "E",
        "agentReady": false,
        "rank": 1127,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 56,
          "maintenance": 60,
          "payments": 30,
          "reliability": 48,
          "schema": 58,
          "security": 32,
          "transparency": 27
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Agents that need one key across quotes, fundamentals, estimates, filings and transcripts with official libraries, and a free key for prototypes.",
        "strengths": [
          "Public Swagger 2.0 document with a description on every one of 116 operations and sample code in five languages",
          "Free key at 60 calls a minute with no card, and a documented 429 with a 30 calls a second ceiling",
          "Official libraries for Python, Go, JavaScript, Ruby, Kotlin and PHP, three updated on 2 November 2026",
          "Hosted MCP server with OAuth, 70 tools, and no key pasted into the client",
          "SLA stated as available for enterprise clients on the home page"
        ],
        "weaknesses": [
          "The Swagger document declares the key only as a `token` query parameter, and the examples carry it in the URL",
          "No status page, changelog, error reference or privacy policy was found, and the terms page is disallowed by robots.txt",
          "87 of 116 operations are marked premium, and self-serve plans are sold per dataset with a $3,500 a month All-In-One",
          "No legal entity, address or governing law was found on any readable page",
          "Parameters carry allowed values in prose only, and responses are documented for 200 alone"
        ],
        "agentNotes": [
          "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",
          "Check the `premium` marker before calling; a free key reaches 29 operations and the rest answer with an error",
          "Poll /quote sparingly; the docs say constant polling is not recommended and point to the websocket for real-time updates",
          "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",
          "Self-serve plans are personal use; anything commercial needs the enterprise contact route"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.1
          }
        ],
        "editorialScores": {
          "ergonomics": 56,
          "maintenance": 60,
          "payments": 30,
          "reliability": 48,
          "schema": 58,
          "security": 32,
          "transparency": 8
        },
        "provenanceScore": 45,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install finnhub-python",
        "http": "curl -H \"X-Finnhub-Token: $FINNHUB_API_KEY\" \"https://finnhub.io/api/v1/quote?symbol=AAPL\"",
        "config": {
          "mcpServers": {
            "finnhub": {
              "url": "https://mcp.finnhub.io/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/market.prices",
        "tool": "https://letme.dev/finnhub"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Market data Basic, 150 calls a minute",
          "unit": "month",
          "usd": 49.99,
          "note": "personal use, billed quarterly"
        },
        {
          "item": "Market data Standard, 300 calls a minute",
          "unit": "month",
          "usd": 129.99,
          "note": "personal use, billed quarterly"
        },
        {
          "item": "Market data Professional, 900 calls a minute",
          "unit": "month",
          "usd": 199.99,
          "note": "personal use, billed annually"
        },
        {
          "item": "Fundamentals, plan 1",
          "unit": "month",
          "usd": 50,
          "note": "personal use"
        },
        {
          "item": "All-In-One, 900 market data and 300 fundamental calls a minute",
          "unit": "month",
          "usd": 3500,
          "note": "personal use"
        }
      ],
      "provenance": {
        "legalEntity": "Finnhub",
        "domain": "finnhub.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://finnhub.io/terms-of-service",
        "privacy": "",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "No legal entity, address or governing law was found. The site names only Finnhub; the GitHub organisation gives New York, NY; the Swagger document's license field says Apache-2.0, which describes the document, not the data.",
          "finnhub.io/robots.txt disallows /terms-of-service and /faq for every crawler, so the terms were not read. The pricing page says each self-serve plan is Personal Use with the terms applying.",
          "/privacy and /about return 302 to the home page. No privacy policy was found.",
          "/.well-known/security.txt and /security.txt return 302 to the home page, so none.",
          "No status page or changelog was found on the site, in the docs document or on the MCP page.",
          "RDAP for the .io domain answered without events, so the registration date is not recorded."
        ],
        "score": 45
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/finnhub.json",
      "live": {
        "slug": "finnhub",
        "probe": {
          "target": "https://finnhub.io/api/v1",
          "method": "get",
          "lastAt": "2026-11-04T21:27:49.418082743Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 178,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 133,
          "p95ms24h": 290,
          "samples24h": 62,
          "samples30d": 62,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 62,
              "ok": 62
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "finnhub",
            "version": "2.0.16",
            "seenAt": "2026-11-04T20:16:14.680739643Z"
          },
          {
            "registry": "pypi",
            "name": "finnhub-python",
            "version": "2.4.29",
            "released": "2026-06-24",
            "seenAt": "2026-11-04T20:16:14.489761831Z"
          }
        ],
        "githubStars": 1097,
        "npmWeekly": 2613,
        "pypiWeekly": 47747,
        "securityTxt": {
          "url": "https://finnhub.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:16.666096211Z"
        },
        "updatedAt": "2026-11-04T21:27:49.418082743Z"
      }
    },
    "edges": [
      {
        "by": 45,
        "category": "payments",
        "leads": "financial-datasets",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 75,
          "b": 30
        }
      },
      {
        "by": 36,
        "category": "transparency",
        "leads": "financial-datasets",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 63,
          "b": 27
        }
      },
      {
        "by": 22,
        "category": "schema",
        "leads": "financial-datasets",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 80,
          "b": 58
        }
      },
      {
        "by": 17,
        "category": "ergonomics",
        "leads": "financial-datasets",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "`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.",
          "b": "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."
        },
        "scores": {
          "a": 73,
          "b": 56
        }
      },
      {
        "by": 17,
        "category": "security",
        "leads": "financial-datasets",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 49,
          "b": 32
        }
      },
      {
        "by": 5,
        "category": "reliability",
        "leads": "finnhub",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 43,
          "b": 48
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Financial Datasets, Inc.",
        "b": "Finnhub",
        "name": "Vendor"
      },
      {
        "a": "https://api.financialdatasets.ai",
        "b": "https://finnhub.io/api/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, websocket",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "not published",
        "b": "$50 per month (plan)",
        "name": "Price for market fundamentals"
      },
      {
        "a": "yes, from $0.02/call",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "28",
        "b": "70",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-26",
        "b": "2026-11-02",
        "name": "Last release"
      },
      {
        "a": "2026-10-29",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-20",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "1.1k stars",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "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.",
        "question": "Which is better for AI agents, Financial Datasets or Finnhub?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in. An agent can also pay Financial Datasets per call over x402, with no account.",
        "question": "Do Financial Datasets and Finnhub need an API key?"
      },
      {
        "answer": "Yes. Financial Datasets has a hosted endpoint at https://api.financialdatasets.ai and Finnhub at https://finnhub.io/api/v1.",
        "question": "Can an agent call Financial Datasets and Finnhub without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 80 against 58",
          "Agent ergonomics, 73 against 56",
          "Security \u0026 auth, 49 against 32",
          "Payments \u0026 pricing, 75 against 30",
          "Transparency \u0026 trust, 63 against 27"
        ],
        "also": [
          "An agent can pay per call over x402, with no account"
        ],
        "goodFor": "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.",
        "slug": "financial-datasets",
        "watchFor": "No status page, incident history or published uptime; the Professional plan's SLA terms aren't public"
      },
      {
        "aheadOn": [
          "Reliability, 48 against 43"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Agents that need one key across quotes, fundamentals, estimates, filings and transcripts with official libraries, and a free key for prototypes.",
        "slug": "finnhub",
        "watchFor": "The Swagger document declares the key only as a `token` query parameter, and the examples carry it in the URL"
      }
    ],
    "history": null,
    "job": {
      "capability": "market.fundamentals",
      "name": "Market fundamentals"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/alpha-vantage-vs-financial-datasets.json",
        "title": "Alpha Vantage vs Financial Datasets",
        "url": "https://www.anchorterminal.com/compare/alpha-vantage-vs-financial-datasets"
      },
      {
        "json": "https://www.anchorterminal.com/compare/alpha-vantage-vs-finnhub.json",
        "title": "Alpha Vantage vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/alpha-vantage-vs-finnhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/databento-vs-financial-datasets.json",
        "title": "Databento vs Financial Datasets",
        "url": "https://www.anchorterminal.com/compare/databento-vs-financial-datasets"
      },
      {
        "json": "https://www.anchorterminal.com/compare/databento-vs-finnhub.json",
        "title": "Databento vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/databento-vs-finnhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-massive.json",
        "title": "Financial Datasets vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-massive"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finnhub-vs-intrinio.json",
        "title": "Finnhub vs Intrinio",
        "url": "https://www.anchorterminal.com/compare/finnhub-vs-intrinio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finnhub-vs-massive.json",
        "title": "Finnhub vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/finnhub-vs-massive"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finnhub-vs-tiingo.json",
        "title": "Finnhub vs Tiingo",
        "url": "https://www.anchorterminal.com/compare/finnhub-vs-tiingo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/finnhub-vs-twelve-data.json",
        "title": "Finnhub vs Twelve Data",
        "url": "https://www.anchorterminal.com/compare/finnhub-vs-twelve-data"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-financial-modeling-prep.json",
        "title": "Financial Datasets vs Financial Modeling Prep",
        "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-financial-modeling-prep"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-intrinio.json",
        "title": "Financial Datasets vs Intrinio",
        "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-intrinio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-tiingo.json",
        "title": "Financial Datasets vs Tiingo",
        "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-tiingo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-twelve-data.json",
        "title": "Financial Datasets vs Twelve Data",
        "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-twelve-data"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-modeling-prep-vs-finnhub.json",
        "title": "Financial Modeling Prep vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/financial-modeling-prep-vs-finnhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eodhd-vs-financial-datasets.json",
        "title": "EODHD vs Financial Datasets",
        "url": "https://www.anchorterminal.com/compare/eodhd-vs-financial-datasets"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eodhd-vs-finnhub.json",
        "title": "EODHD vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/eodhd-vs-finnhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/benzinga-vs-financial-datasets.json",
        "title": "Benzinga vs Financial Datasets",
        "url": "https://www.anchorterminal.com/compare/benzinga-vs-financial-datasets"
      },
      {
        "json": "https://www.anchorterminal.com/compare/benzinga-vs-finnhub.json",
        "title": "Benzinga vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/benzinga-vs-finnhub"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 5,
        "edge": "finnhub",
        "financial-datasets": 43,
        "finnhub": 48,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 22,
        "edge": "financial-datasets",
        "financial-datasets": 80,
        "finnhub": 58,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 17,
        "edge": "financial-datasets",
        "financial-datasets": 73,
        "finnhub": 56,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 17,
        "edge": "financial-datasets",
        "financial-datasets": 49,
        "finnhub": 32,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 45,
        "edge": "financial-datasets",
        "financial-datasets": 75,
        "finnhub": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "finnhub",
        "financial-datasets": 56,
        "finnhub": 60,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 36,
        "edge": "financial-datasets",
        "financial-datasets": 63,
        "finnhub": 27,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "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.",
    "tasks": null,
    "tutorials": [],
    "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub",
    "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.min.md"
  },
  "markdown": "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.\n\n- Financial Datasets: grade C, 61.8/100, rank #534 of 1349. Markdown https://www.anchorterminal.com/tools/financial-datasets.md · JSON https://www.anchorterminal.com/api/v1/tools/financial-datasets.json\n- Finnhub: grade E, 45.1/100, rank #1127 of 1349. Markdown https://www.anchorterminal.com/tools/finnhub.md · JSON https://www.anchorterminal.com/api/v1/tools/finnhub.json\n- Best financial market data APIs for AI agents: https://www.anchorterminal.com/best/market-data/index.md\n- All 55 markets comparisons: https://www.anchorterminal.com/compare/market-data/index.md\n\n## Which one, for what\n\n### Financial Datasets (C)\n\nGood 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.\n\nAhead on:\n- Schema \u0026 documentation, 80 against 58\n- Agent ergonomics, 73 against 56\n- Security \u0026 auth, 49 against 32\n- Payments \u0026 pricing, 75 against 30\n- Transparency \u0026 trust, 63 against 27\n\nAlso in its favour:\n- An agent can pay per call over x402, with no account\n\nWatch for: No status page, incident history or published uptime; the Professional plan's SLA terms aren't public\n\n### Finnhub (E)\n\nGood for: Agents that need one key across quotes, fundamentals, estimates, filings and transcripts with official libraries, and a free key for prototypes.\n\nAhead on:\n- Reliability, 48 against 43\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: The Swagger document declares the key only as a `token` query parameter, and the examples carry it in the URL\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Financial Datasets +45\n\n- 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.\n- 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.\n\n### Transparency \u0026 trust: Financial Datasets +36\n\n- 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.\n- 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.\n\n### Schema \u0026 documentation: Financial Datasets +22\n\n- 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.\n- 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.\n\n### Agent ergonomics: Financial Datasets +17\n\n- 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.\n- 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.\n\n### Security \u0026 auth: Financial Datasets +17\n\n- 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.\n- 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.\n\n### Reliability: Finnhub +5\n\n- 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.\n- 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.\n\n## Score by category\n\n| Category | Weight | Financial Datasets | Finnhub | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 43 | 48 | Finnhub +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 80 | 58 | Financial Datasets +22 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 56 | Financial Datasets +17 |\n| Security \u0026 auth | 14% (17.5 this run) | 49 | 32 | Financial Datasets +17 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 75 | 30 | Financial Datasets +45 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 56 | 60 | Finnhub +4 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 63 | 27 | Financial Datasets +36 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **61.8 · C** | **45.1 · E** | |\n\n## Facts side by side\n\n| Fact | Financial Datasets | Finnhub |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Financial Datasets, Inc. | Finnhub |\n| Hosted endpoint | `https://api.financialdatasets.ai` | `https://finnhub.io/api/v1` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP, websocket |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| Price for market fundamentals | not published | $50 per month (plan) |\n| x402 | yes, from $0.02/call | no |\n| Tools exposed | 28 | 70 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-10-26 | 2026-11-02 |\n| Terms last updated | 2026-10-29 | couldn't be read |\n| Privacy policy last updated | 2026-08-20 | no document linked |\n| Customer content may train models | not found in the text | couldn't be read |\n| Terms restrict automated access | yes | couldn't be read |\n| Terms restrict benchmarking | yes | couldn't be read |\n| Terms or service can change without notice | not found in the text | couldn't be read |\n| Arbitration or class-action waiver | not found in the text | couldn't be read |\n| Popularity | none | 1.1k stars |\n\n## Verdicts\n\n**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.\n\n**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.\n\n## Before you call either\n\n### Financial Datasets\n\n1. 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\n2. Keep `limit` small and ask for one `period` at a time; premium endpoints count as 2, 4 or 8 requests on keyed plans\n3. 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\n4. Treat a 402 on a keyed account as an empty balance and mint a checkout link for the owner; don't retry the call\n5. Check the plan's licence before showing the data to anyone else; redistribution needs Professional or Enterprise\n\n### Finnhub\n\n1. 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\n2. Check the `premium` marker before calling; a free key reaches 29 operations and the rest answer with an error\n3. Poll /quote sparingly; the docs say constant polling is not recommended and point to the websocket for real-time updates\n4. 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\n5. Self-serve plans are personal use; anything commercial needs the enterprise contact route\n\n## Questions\n\n### Which is better for AI agents, Financial Datasets or Finnhub?\n\nFinancial 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.\n\n### Do Financial Datasets and Finnhub need an API key?\n\nBoth take an API key or an OAuth sign-in. An agent can also pay Financial Datasets per call over x402, with no account.\n\n### Can an agent call Financial Datasets and Finnhub without installing anything?\n\nYes. Financial Datasets has a hosted endpoint at https://api.financialdatasets.ai and Finnhub at https://finnhub.io/api/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.json, and with the fewest tokens: https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"financial-datasets\", \"b\": \"finnhub\"}`. From a terminal: `anchor compare financial-datasets finnhub`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/financial-datasets.json and https://www.anchorterminal.com/api/v1/tools/finnhub.json\n\n## Other comparisons with Financial Datasets or Finnhub\n\n- [Alpha Vantage vs Financial Datasets](https://www.anchorterminal.com/compare/alpha-vantage-vs-financial-datasets.md)\n- [Alpha Vantage vs Finnhub](https://www.anchorterminal.com/compare/alpha-vantage-vs-finnhub.md)\n- [Databento vs Financial Datasets](https://www.anchorterminal.com/compare/databento-vs-financial-datasets.md)\n- [Databento vs Finnhub](https://www.anchorterminal.com/compare/databento-vs-finnhub.md)\n- [Financial Datasets vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/financial-datasets-vs-massive.md)\n- [Finnhub vs Intrinio](https://www.anchorterminal.com/compare/finnhub-vs-intrinio.md)\n- [Finnhub vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/finnhub-vs-massive.md)\n- [Finnhub vs Tiingo](https://www.anchorterminal.com/compare/finnhub-vs-tiingo.md)\n- [Finnhub vs Twelve Data](https://www.anchorterminal.com/compare/finnhub-vs-twelve-data.md)\n- [Financial Datasets vs Financial Modeling Prep](https://www.anchorterminal.com/compare/financial-datasets-vs-financial-modeling-prep.md)\n- [Financial Datasets vs Intrinio](https://www.anchorterminal.com/compare/financial-datasets-vs-intrinio.md)\n- [Financial Datasets vs Tiingo](https://www.anchorterminal.com/compare/financial-datasets-vs-tiingo.md)\n- [Financial Datasets vs Twelve Data](https://www.anchorterminal.com/compare/financial-datasets-vs-twelve-data.md)\n- [Financial Modeling Prep vs Finnhub](https://www.anchorterminal.com/compare/financial-modeling-prep-vs-finnhub.md)\n- [EODHD vs Financial Datasets](https://www.anchorterminal.com/compare/eodhd-vs-financial-datasets.md)\n- [EODHD vs Finnhub](https://www.anchorterminal.com/compare/eodhd-vs-finnhub.md)\n- [Benzinga vs Financial Datasets](https://www.anchorterminal.com/compare/benzinga-vs-financial-datasets.md)\n- [Benzinga vs Finnhub](https://www.anchorterminal.com/compare/benzinga-vs-finnhub.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Financial Datasets vs Finnhub",
        "url": ""
      }
    ],
    "description": "Financial Datasets scores 61.8 (C) to Finnhub's 45.1 (E) for market fundamentals. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Financial Datasets C 61.8",
      "Finnhub E 45.1",
      "scores"
    ],
    "h1": "Financial Datasets vs Finnhub",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/financial-datasets-vs-finnhub",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Financial Datasets vs Finnhub for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub"
  },
  "tokens": {
    "markdown": 4450,
    "slim": 2730
  },
  "version": 1
}
