{
  "data": {
    "a": {
      "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": 1140,
        "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-04T19:34:38.057513489Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 612,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 136,
          "p95ms24h": 413,
          "samples24h": 43,
          "samples30d": 43,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 43,
              "ok": 43
            }
          ]
        },
        "securityTxt": {
          "url": "https://finnhub.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:16.666096211Z"
        },
        "updatedAt": "2026-11-04T19:34:38.057513489Z"
      }
    },
    "answer": "Massive (formerly Polygon.io) scores 73.1 (BB) on agent readiness against Finnhub's 45.1 (E), and leads in every scored category.",
    "b": {
      "slug": "massive",
      "name": "Massive (formerly Polygon.io)",
      "vendor": "Massive",
      "vendorUrl": "https://massive.com",
      "kind": "http-api",
      "category": "market-data",
      "summary": "US market data API for stocks, options, indices, forex, crypto and futures, from the consolidated tapes.",
      "url": "https://www.anchorterminal.com/tools/massive",
      "markdownUrl": "https://www.anchorterminal.com/tools/massive.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/massive.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/massive.json",
      "dns": "massive.grade.anchorterminal.com",
      "repo": "https://github.com/massive-com/client-python",
      "license": "MIT (clients)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.massive.com",
      "packages": [],
      "auth": "api-key",
      "authNotes": "`?apiKey=` or Bearer. x402 payments at agent.massive.com need no key.",
      "pricing": "freemium",
      "pricingNotes": "Free Basic plan at 5 calls a minute with 2 years of end-of-day data. Stocks Starter $29, Developer $79 and Advanced $199 a month for individuals (non-commercial), business plans priced separately (https://massive.com/pricing). Over x402 at agent.massive.com, 24 US stock routes at $0.01 a request in USDC on Base, with the live price in each 402 response (https://agentic.market/services/agent-massive-com).",
      "priceSummary": "$0.01 / call",
      "where": "hosted",
      "x402": {
        "level": "yes",
        "evidence": "x402 on agent.massive.com since 2026-09-01 per the changelog. The docs say each route quotes its live price in the 402 response and only successful requests are charged. Agentic.Market lists 24 GET routes at $0.01 each on Base, US stocks only, covering aggregates, snapshots, indicators, reference data, news and SEC filings (https://massive.com/docs/ai-tools/x402).",
        "endpoints": [
          {
            "url": "https://agent.massive.com/v2/aggs/ticker/{stocksTicker}/range/{multiplier}/{timespan}/{from}/{to}",
            "priceUsd": 0.01,
            "network": "eip155:8453"
          },
          {
            "url": "https://agent.massive.com/v2/snapshot/locale/us/markets/stocks/tickers/{stocksTicker}",
            "priceUsd": 0.01,
            "network": "eip155:8453"
          },
          {
            "url": "https://agent.massive.com/v3/reference/tickers",
            "priceUsd": 0.01,
            "network": "eip155:8453"
          },
          {
            "url": "https://agent.massive.com/v2/reference/news",
            "priceUsd": 0.01,
            "network": "eip155:8453"
          },
          {
            "url": "https://agent.massive.com/stocks/filings/vX/index",
            "priceUsd": 0.01,
            "network": "eip155:8453"
          }
        ]
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 1500,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-26"
      },
      "docsUrl": "https://massive.com/docs",
      "llmsTxt": "https://massive.com/llms.txt",
      "openapi": "https://api.massive.com/openapi",
      "capabilities": [
        "market.prices",
        "market.history",
        "data.markets",
        "market.crypto",
        "market.indices"
      ],
      "tags": [
        "official",
        "hosted",
        "x402",
        "freemium",
        "openapi",
        "llms-txt",
        "mcp"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.1,
        "grade": "BB",
        "agentReady": true,
        "rank": 100,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 1,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 82,
          "payments": 90,
          "reliability": 78,
          "schema": 89,
          "security": 35,
          "transparency": 67
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "24 US stock routes over x402 at agent.massive.com, $0.01 each on Base, and only successful requests are charged. The status history lists 14 partial incidents in the 90 days to 1 November, including US equity aggregate bars missing for about 16 hours on 8 and 9 September.",
        "bestFor": "Agents that need US equities, options or futures data with real history, and the only listing here selling US stock data over x402.",
        "strengths": [
          "24 US stock routes over x402 at agent.massive.com, $0.01 each on Base, and only successful requests are charged",
          "OpenAPI document with enums and error responses, plus an llms.txt indexing about 160 endpoint pages",
          "Official clients in Python, JavaScript, Go and the JVM, regenerated from the OpenAPI spec as recently as 27 October 2026",
          "Incidents posted with start and end times on a Statuspage history feed",
          "Six dated changelog entries between 25 August and 28 October 2026"
        ],
        "weaknesses": [
          "14 partial incidents from 3 August to 1 November 2026, mostly stale or missing data on stock aggregates and quotes",
          "x402 covers US stocks only, with no ticks, streaming or other asset classes",
          "The API key is accepted as `?apiKey=` in the query string, the only scheme the OpenAPI file declares",
          "No security.txt, bug bounty or certification found, and the privacy policy dates from March 2024",
          "Individual plans are non-commercial and business terms forbid redistribution"
        ],
        "agentNotes": [
          "Send the key as a Bearer header, not `?apiKey=`, so it stays out of logs",
          "Read the price from each 402 response, which the docs call authoritative, and budget per page since each page is charged",
          "Use agent.massive.com only for US stocks. Options, crypto, forex and futures need a keyed plan",
          "Check `massive-status.com` when aggregates look stale, since several incidents since August were bars that stopped updating or went missing",
          "Don't republish prices fetched on an individual plan"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 73.1
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 82,
          "payments": 90,
          "reliability": 78,
          "schema": 89,
          "security": 35,
          "transparency": 45
        },
        "provenanceScore": 88,
        "dataQualityScore": 87,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H \"Authorization: Bearer $MASSIVE_API_KEY\" \"https://api.massive.com/v2/aggs/ticker/AAPL/prev\"",
        "claudeCode": "claude mcp add --transport http massive https://mcp.massive.com/"
      },
      "letme": {
        "capability": "https://letme.dev/market.prices",
        "tool": "https://letme.dev/massive"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Stocks Starter",
          "unit": "month",
          "usd": 29,
          "note": "individual, non-commercial"
        },
        {
          "item": "Stocks Developer",
          "unit": "month",
          "usd": 79,
          "note": "individual, non-commercial"
        },
        {
          "item": "Stocks Advanced",
          "unit": "month",
          "usd": 199,
          "note": "individual, non-commercial"
        }
      ],
      "provenance": {
        "legalEntity": "Massive.com, Inc.",
        "domain": "massive.com",
        "domainRegistered": "1995-02-13",
        "domainNote": "massive.com was registered in 1995, decades before the rename.",
        "endpointOnVendorDomain": true,
        "terms": "https://massive.com/legal/businesses-terms-of-service",
        "privacy": "https://massive.com/legal/privacy",
        "statusPage": "https://massive-status.com",
        "changelog": "https://massive.com/changelog",
        "securityTxt": "none",
        "checked": "2026-11-01",
        "score": 88
      },
      "dataQuality": {
        "coverage": "All 19 US stock exchanges plus dark pools, and options, indices, forex, crypto and futures",
        "coverageRating": 5,
        "freshness": "Real time, 15-minute delayed or end of day by plan",
        "freshnessClass": "realtime",
        "history": "2 to 20+ years by plan",
        "historyYears": 20,
        "methodology": "https://massive.com/docs/rest/stocks/overview",
        "sourcesDisclosed": true,
        "licence": "Proprietary, with published terms for individuals and businesses",
        "licenceClass": "clear",
        "standing": "",
        "standingClass": "none",
        "reuse": "Business terms forbid redistributing, sublicensing or selling the data, and require deletion on termination. Individual plans are non-commercial.",
        "score": 87,
        "checks": null
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/massive.json",
      "live": {
        "slug": "massive",
        "probe": {
          "target": "https://api.massive.com",
          "method": "get",
          "lastAt": "2026-11-04T19:34:53.381369549Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 307,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.98,
          "p50ms24h": 267,
          "p95ms24h": 358,
          "samples24h": 247,
          "samples30d": 8069,
          "days": [
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 248
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 248
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 202,
              "ok": 202
            }
          ]
        },
        "vendorStatus": {
          "page": "https://massive-status.com",
          "indicator": "minor",
          "summary": "Partially Degraded Service",
          "checkedAt": "2026-11-04T19:31:43.686632907Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "massive-com/client-python",
            "version": "v2.9.1",
            "released": "2026-10-26",
            "seenAt": "2026-11-03T20:38:07.628511208Z"
          }
        ],
        "githubStars": 1523,
        "securityTxt": {
          "url": "https://massive.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:52:42.899942093Z"
        },
        "llmsTxt": {
          "url": "https://massive.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:23:22.551811497Z"
        },
        "domain": {
          "domain": "massive.com",
          "registered": "1995-02-13",
          "source": "https://rdap.verisign.com/com/v1/domain/massive.com",
          "checkedAt": "2026-11-01T14:07:32.013168238Z"
        },
        "pages": [
          {
            "url": "https://massive.com/changelog",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-04T08:27:39.330534708Z",
            "changedAt": "2026-10-31T06:16:01.564939681Z",
            "fingerprint": "0cd6bc9476ca"
          },
          {
            "url": "https://massive.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-04T08:27:45.659813839Z",
            "changedAt": "2026-10-31T06:16:08.173405264Z",
            "fingerprint": "c06a4148bf72"
          },
          {
            "url": "https://massive.com/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-04T08:27:43.705812993Z",
            "changedAt": "2026-10-31T06:16:05.957773097Z",
            "fingerprint": "1c9024302c92"
          },
          {
            "url": "https://massive.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-01T13:14:17.398766419Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "469364c15f7e"
          },
          {
            "url": "https://massive.com/legal/businesses-terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-04T08:27:41.718942017Z",
            "changedAt": "2026-10-31T06:16:03.806023028Z",
            "fingerprint": "f4ec38dadfe4"
          }
        ],
        "github": {
          "repo": "massive-com/client-python",
          "checkedAt": "2026-11-02T09:03:56.959547185Z",
          "stars": 1523,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-26T16:33:41Z",
          "openIssues": 13,
          "openPRs": 8,
          "issuesOpened90d": 4,
          "issuesClosed90d": 3,
          "prsMerged90d": 14,
          "ci": {
            "branch": "master",
            "runs": 50,
            "success": 48,
            "failure": 2,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-26T04:23:15Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 7,
            "medianDays": 1.1
          }
        },
        "updatedAt": "2026-11-04T19:34:53.381369549Z"
      }
    },
    "edges": [
      {
        "by": 60,
        "category": "payments",
        "leads": "massive",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "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.",
          "b": "x402 on its own domain at agent.massive.com since 1 September, but only 23 US stock routes. Options, indices, forex, crypto, futures, tick data and streaming still need a key (30 of 40). $0.01 a route on Agentic.Market, which the docs link to, and plan prices on massive.com/pricing, all without a login (20). Free Basic plan at 5 calls a minute with end-of-day data. The pricing page doesn't say a card is needed (20). An agent with a funded Base wallet can pay with no account (20)."
        },
        "scores": {
          "a": 30,
          "b": 90
        }
      },
      {
        "by": 40,
        "category": "transparency",
        "leads": "massive",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "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.",
          "b": "Closed service under business terms last updated 6 October 2026, Massive.com, Inc. under Georgia law, which now also cover pay-per-request purchases without an account. The MCP server and clients are MIT (15). Privacy policy last updated 22 March 2024, with retention 'as long as we are providing the Services' and no periods. The business terms require deleting data on termination. No DPA found (12 of 30). Dated sunsets in the changelog. The terms let Massive change the Services at its discretion, with a 30-day route to report a change that materially degrades a subscribed service (10 of 20). Stripe, Google and Hotjar are named, and data may sit 'in the United States and locations around the world'. No subprocessor list (8 of 20)."
        },
        "scores": {
          "a": 27,
          "b": 67
        }
      },
      {
        "by": 31,
        "category": "schema",
        "leads": "massive",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "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.",
          "b": "OpenAPI document at api.massive.com/openapi (OpenAPI 3.0.3, 148 paths) with enums such as `timespan` and `sort`, and 400, 401 and 404 responses defined (25). llms.txt at massive.com/docs/rest/llms.txt indexing about 160 endpoint pages (10). One-line descriptions per endpoint in the index, longer ones in the reference, with little on when not to use a call (14 of 20). Typed path and query parameters with enums and required fields (13 of 15). Examples in the docs and error responses in the spec, though the llms.txt says nothing about error shapes (12 of 15). Versioned paths from /v1 to /v3 and a dated public changelog (15)."
        },
        "scores": {
          "a": 58,
          "b": 89
        }
      },
      {
        "by": 30,
        "category": "reliability",
        "leads": "massive",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "Atlassian Statuspage at massive-status.com with REST, WebSocket and flat-file components for each asset class (20). The history feed lists 14 unplanned incidents from 3 August to 1 November 2026, each limited to one product, one endpoint, one asset class or some accounts. They include US equity aggregate bars missing for roughly two-thirds of US equities from 18:46 ET on 8 September until 10:29 the next day, stale stocks quotes on 20 August, and slow responses with intermittent 502s on stocks v2 aggregates from 10:37 to 13:08 ET on 2 September. The newest, on 27 October, was delayed WebSocket data and REST errors for some accounts from 13:49 to 14:17 EDT. Read the way partial incidents are read on other listings, that is minor incidents only (20). Free plan limited to 5 calls a minute, paid plans unlimited, nothing stated for x402 (10 of 15). No 429 or Retry-After guidance found in the docs or the OpenAPI file, though the official Python client retries 429 with backoff (8 of 15). The business terms dated 6 October 2026 point to a separate Support Policy and SLA document for customers who buy service levels (10). The REST API is generally available (10)."
        },
        "scores": {
          "a": 48,
          "b": 78
        }
      },
      {
        "by": 22,
        "category": "ergonomics",
        "leads": "massive",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "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.",
          "b": "`limit`, `sort` and `adjusted` on most list and aggregate calls, no field selection found (15 of 25). `next_url` pagination that the official clients follow for you, plus date and ticker filters (18 of 20). Errors in the spec carry a status and message, with 400 responses on 64 of the 148 operations (14 of 20). All market data calls are GETs, and the x402 docs say only successful requests are charged and each page is charged separately. The hosted MCP's three tools carry readOnlyHint, per the 1 October check (16 of 20). Official clients in Python, JavaScript, Go and the JVM, with few required parameters (15)."
        },
        "scores": {
          "a": 56,
          "b": 78
        }
      },
      {
        "by": 22,
        "category": "maintenance",
        "leads": "massive",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read as a closed service. The newest dated change is 2 November 2026, when finnhub-go, finnhub-ruby and finnhub-php gained a price target history endpoint; the MCP page is dated 6 August 2026 (30). Only that one dated change falls in the last 90 days, the previous library commits being 22 June 2026 (5 of 20). Support by email, with no public changelog or community channel found (5 of 15). Six official client libraries, finnhub-python at 2.4.29 of 24 June 2026 (15). The libraries are generated from the API document; no CI run was visible and the Python README names an older version than PyPI (5 of 10). 30 + 5 + 5 + 15 + 5 = 60.",
          "b": "Newest changelog entry 2026-10-28, new Insider Trading Activity and Insider Holdings endpoints (30). Changelog entries on 25 August, 1 September, 22 September, 2 October, 16 October and 28 October, six in 90 days, besides client releases (20). Public changelog and a support channel. We couldn't read GitHub issue activity in this run (10 of 15). Official clients are current, with Python v2.9.0 on 2026-10-16 and v2.9.1 on 2026-10-25, Go v3.5.0, v3.6.0 and v3.7.0 between 20 and 27 October and JavaScript v10.8.0 on 2026-09-17, each regenerated from the OpenAPI spec (15). The MCP and client repos run CI. The MCP server repository is still at v0.10.0 of 2026-05-05 and its README still calls the project experimental (7 of 10)."
        },
        "scores": {
          "a": 60,
          "b": 82
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Finnhub",
        "b": "Massive",
        "name": "Vendor"
      },
      {
        "a": "https://finnhub.io/api/v1",
        "b": "https://api.massive.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP, websocket",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "yes, from $0.01/call",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "MIT (clients)",
        "name": "Licence"
      },
      {
        "a": "70",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-11-02",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-10-06",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2024-03-22",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.1k stars",
        "b": "1.5k stars",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Massive (formerly Polygon.io) scores 73.1 (BB) on agent readiness against Finnhub's 45.1 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, Finnhub or Massive (formerly Polygon.io)?"
      },
      {
        "answer": "Finnhub takes an API key or an OAuth sign-in. Massive (formerly Polygon.io) needs an API key. An agent can also pay Massive (formerly Polygon.io) per call over x402, with no account.",
        "question": "Do Finnhub and Massive (formerly Polygon.io) need an API key?"
      },
      {
        "answer": "Yes. Finnhub has a hosted endpoint at https://finnhub.io/api/v1 and Massive (formerly Polygon.io) at https://api.massive.com.",
        "question": "Can an agent call Finnhub and Massive (formerly Polygon.io) without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "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"
      },
      {
        "aheadOn": [
          "Reliability, 78 against 48",
          "Schema \u0026 documentation, 89 against 58",
          "Agent ergonomics, 78 against 56",
          "Payments \u0026 pricing, 90 against 30",
          "Maintenance \u0026 community, 82 against 60",
          "Transparency \u0026 trust, 67 against 27"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "An agent can pay per call over x402, with no account"
        ],
        "goodFor": "Agents that need US equities, options or futures data with real history, and the only listing here selling US stock data over x402.",
        "slug": "massive",
        "watchFor": "14 partial incidents from 3 August to 1 November 2026, mostly stale or missing data on stock aggregates and quotes"
      }
    ],
    "history": {
      "finnhub": null,
      "massive": [
        {
          "causes": [
            "product",
            "correction"
          ],
          "date": "2026-11-01",
          "delta": 3.2,
          "from": 69.9,
          "fromGrade": "B",
          "to": 73.1,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 69.8,
          "fromGrade": "B",
          "to": 69.9,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.2,
          "from": 70,
          "fromGrade": "BB",
          "to": 69.8,
          "toGrade": "B"
        }
      ]
    },
    "job": {
      "capability": "market.prices",
      "name": "Market prices"
    },
    "others": [
      {
        "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/alpha-vantage-vs-massive.json",
        "title": "Alpha Vantage vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/alpha-vantage-vs-massive"
      },
      {
        "json": "https://www.anchorterminal.com/compare/benzinga-vs-massive.json",
        "title": "Benzinga vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/benzinga-vs-massive"
      },
      {
        "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/databento-vs-massive.json",
        "title": "Databento vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/databento-vs-massive"
      },
      {
        "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/financial-modeling-prep-vs-massive.json",
        "title": "Financial Modeling Prep vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/financial-modeling-prep-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-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/intrinio-vs-massive.json",
        "title": "Intrinio vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/intrinio-vs-massive"
      },
      {
        "json": "https://www.anchorterminal.com/compare/massive-vs-tiingo.json",
        "title": "Massive (formerly Polygon.io) vs Tiingo",
        "url": "https://www.anchorterminal.com/compare/massive-vs-tiingo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/massive-vs-twelve-data.json",
        "title": "Massive (formerly Polygon.io) vs Twelve Data",
        "url": "https://www.anchorterminal.com/compare/massive-vs-twelve-data"
      },
      {
        "json": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.json",
        "title": "Financial Datasets vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub"
      },
      {
        "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-finnhub.json",
        "title": "EODHD vs Finnhub",
        "url": "https://www.anchorterminal.com/compare/eodhd-vs-finnhub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/eodhd-vs-massive.json",
        "title": "EODHD vs Massive (formerly Polygon.io)",
        "url": "https://www.anchorterminal.com/compare/eodhd-vs-massive"
      },
      {
        "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": 30,
        "edge": "massive",
        "finnhub": 48,
        "key": "reliability",
        "massive": 78,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 31,
        "edge": "massive",
        "finnhub": 58,
        "key": "schema",
        "massive": 89,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 22,
        "edge": "massive",
        "finnhub": 56,
        "key": "ergonomics",
        "massive": 78,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 3,
        "edge": "massive",
        "finnhub": 32,
        "key": "security",
        "massive": 35,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 60,
        "edge": "massive",
        "finnhub": 30,
        "key": "payments",
        "massive": 90,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 22,
        "edge": "massive",
        "finnhub": 60,
        "key": "maintenance",
        "massive": 82,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 40,
        "edge": "massive",
        "finnhub": 27,
        "key": "transparency",
        "massive": 67,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Massive (formerly Polygon.io) scores 73.1 (BB) on agent readiness against Finnhub's 45.1 (E), and leads in every scored category. Both do market prices. Massive (formerly Polygon.io) accepts x402. Finnhub doesn't.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "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.",
      "massive": "24 US stock routes over x402 at agent.massive.com, $0.01 each on Base, and only successful requests are charged. The status history lists 14 partial incidents in the 90 days to 1 November, including US equity aggregate bars missing for about 16 hours on 8 and 9 September."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/finnhub-vs-massive",
    "json": "https://www.anchorterminal.com/compare/finnhub-vs-massive.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/finnhub-vs-massive.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/finnhub-vs-massive.min.md"
  },
  "markdown": "Massive (formerly Polygon.io) scores 73.1 (BB) on agent readiness against Finnhub's 45.1 (E), and leads in every scored category. Both do market prices. Massive (formerly Polygon.io) accepts x402. Finnhub doesn't.\n\n- Finnhub: grade E, 45.1/100, rank #1140 of 1349. Markdown https://www.anchorterminal.com/tools/finnhub.md · JSON https://www.anchorterminal.com/api/v1/tools/finnhub.json\n- Massive (formerly Polygon.io): grade BB, 73.1/100, rank #100 of 1349. Markdown https://www.anchorterminal.com/tools/massive.md · JSON https://www.anchorterminal.com/api/v1/tools/massive.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### 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\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### Massive (formerly Polygon.io) (BB)\n\nGood for: Agents that need US equities, options or futures data with real history, and the only listing here selling US stock data over x402.\n\nAhead on:\n- Reliability, 78 against 48\n- Schema \u0026 documentation, 89 against 58\n- Agent ergonomics, 78 against 56\n- Payments \u0026 pricing, 90 against 30\n- Maintenance \u0026 community, 82 against 60\n- Transparency \u0026 trust, 67 against 27\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- An agent can pay per call over x402, with no account\n\nWatch for: 14 partial incidents from 3 August to 1 November 2026, mostly stale or missing data on stock aggregates and quotes\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Massive (formerly Polygon.io) +60\n\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- Massive (formerly Polygon.io) (90): x402 on its own domain at agent.massive.com since 1 September, but only 23 US stock routes. Options, indices, forex, crypto, futures, tick data and streaming still need a key (30 of 40). $0.01 a route on Agentic.Market, which the docs link to, and plan prices on massive.com/pricing, all without a login (20). Free Basic plan at 5 calls a minute with end-of-day data. The pricing page doesn't say a card is needed (20). An agent with a funded Base wallet can pay with no account (20).\n\n### Transparency \u0026 trust: Massive (formerly Polygon.io) +40\n\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- Massive (formerly Polygon.io) (67): Closed service under business terms last updated 6 October 2026, Massive.com, Inc. under Georgia law, which now also cover pay-per-request purchases without an account. The MCP server and clients are MIT (15). Privacy policy last updated 22 March 2024, with retention 'as long as we are providing the Services' and no periods. The business terms require deleting data on termination. No DPA found (12 of 30). Dated sunsets in the changelog. The terms let Massive change the Services at its discretion, with a 30-day route to report a change that materially degrades a subscribed service (10 of 20). Stripe, Google and Hotjar are named, and data may sit 'in the United States and locations around the world'. No subprocessor list (8 of 20).\n\n### Schema \u0026 documentation: Massive (formerly Polygon.io) +31\n\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- Massive (formerly Polygon.io) (89): OpenAPI document at api.massive.com/openapi (OpenAPI 3.0.3, 148 paths) with enums such as `timespan` and `sort`, and 400, 401 and 404 responses defined (25). llms.txt at massive.com/docs/rest/llms.txt indexing about 160 endpoint pages (10). One-line descriptions per endpoint in the index, longer ones in the reference, with little on when not to use a call (14 of 20). Typed path and query parameters with enums and required fields (13 of 15). Examples in the docs and error responses in the spec, though the llms.txt says nothing about error shapes (12 of 15). Versioned paths from /v1 to /v3 and a dated public changelog (15).\n\n### Reliability: Massive (formerly Polygon.io) +30\n\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- Massive (formerly Polygon.io) (78): Atlassian Statuspage at massive-status.com with REST, WebSocket and flat-file components for each asset class (20). The history feed lists 14 unplanned incidents from 3 August to 1 November 2026, each limited to one product, one endpoint, one asset class or some accounts. They include US equity aggregate bars missing for roughly two-thirds of US equities from 18:46 ET on 8 September until 10:29 the next day, stale stocks quotes on 20 August, and slow responses with intermittent 502s on stocks v2 aggregates from 10:37 to 13:08 ET on 2 September. The newest, on 27 October, was delayed WebSocket data and REST errors for some accounts from 13:49 to 14:17 EDT. Read the way partial incidents are read on other listings, that is minor incidents only (20). Free plan limited to 5 calls a minute, paid plans unlimited, nothing stated for x402 (10 of 15). No 429 or Retry-After guidance found in the docs or the OpenAPI file, though the official Python client retries 429 with backoff (8 of 15). The business terms dated 6 October 2026 point to a separate Support Policy and SLA document for customers who buy service levels (10). The REST API is generally available (10).\n\n### Agent ergonomics: Massive (formerly Polygon.io) +22\n\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- Massive (formerly Polygon.io) (78): `limit`, `sort` and `adjusted` on most list and aggregate calls, no field selection found (15 of 25). `next_url` pagination that the official clients follow for you, plus date and ticker filters (18 of 20). Errors in the spec carry a status and message, with 400 responses on 64 of the 148 operations (14 of 20). All market data calls are GETs, and the x402 docs say only successful requests are charged and each page is charged separately. The hosted MCP's three tools carry readOnlyHint, per the 1 October check (16 of 20). Official clients in Python, JavaScript, Go and the JVM, with few required parameters (15).\n\n### Maintenance \u0026 community: Massive (formerly Polygon.io) +22\n\n- Finnhub (60): Read as a closed service. The newest dated change is 2 November 2026, when finnhub-go, finnhub-ruby and finnhub-php gained a price target history endpoint; the MCP page is dated 6 August 2026 (30). Only that one dated change falls in the last 90 days, the previous library commits being 22 June 2026 (5 of 20). Support by email, with no public changelog or community channel found (5 of 15). Six official client libraries, finnhub-python at 2.4.29 of 24 June 2026 (15). The libraries are generated from the API document; no CI run was visible and the Python README names an older version than PyPI (5 of 10). 30 + 5 + 5 + 15 + 5 = 60.\n- Massive (formerly Polygon.io) (82): Newest changelog entry 2026-10-28, new Insider Trading Activity and Insider Holdings endpoints (30). Changelog entries on 25 August, 1 September, 22 September, 2 October, 16 October and 28 October, six in 90 days, besides client releases (20). Public changelog and a support channel. We couldn't read GitHub issue activity in this run (10 of 15). Official clients are current, with Python v2.9.0 on 2026-10-16 and v2.9.1 on 2026-10-25, Go v3.5.0, v3.6.0 and v3.7.0 between 20 and 27 October and JavaScript v10.8.0 on 2026-09-17, each regenerated from the OpenAPI spec (15). The MCP and client repos run CI. The MCP server repository is still at v0.10.0 of 2026-05-05 and its README still calls the project experimental (7 of 10).\n\n## Score by category\n\n| Category | Weight | Finnhub | Massive (formerly Polygon.io) | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 48 | 78 | Massive (formerly Polygon.io) +30 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 58 | 89 | Massive (formerly Polygon.io) +31 |\n| Agent ergonomics | 13% (16.2 this run) | 56 | 78 | Massive (formerly Polygon.io) +22 |\n| Security \u0026 auth | 14% (17.5 this run) | 32 | 35 | Massive (formerly Polygon.io) +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 90 | Massive (formerly Polygon.io) +60 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 60 | 82 | Massive (formerly Polygon.io) +22 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 27 | 67 | Massive (formerly Polygon.io) +40 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **45.1 · E** | **73.1 · BB** | |\n\n## Facts side by side\n\n| Fact | Finnhub | Massive (formerly Polygon.io) |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Finnhub | Massive |\n| Hosted endpoint | `https://finnhub.io/api/v1` | `https://api.massive.com` |\n| Transports | HTTP, Streamable HTTP, websocket | HTTP, Streamable HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | yes, from $0.01/call |\n| Licence | none | MIT (clients) |\n| Tools exposed | 70 | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-11-02 | 2026-10-28 |\n| Terms last updated | couldn't be read | 2026-10-06 |\n| Privacy policy last updated | no document linked | 2024-03-22 |\n| Customer content may train models | couldn't be read | not found in the text |\n| Terms restrict automated access | couldn't be read | yes |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | not found in the text |\n| Arbitration or class-action waiver | couldn't be read | yes |\n| Popularity | 1.1k stars | 1.5k stars |\n| Agent reviews | none | 3.5/5 (2) |\n\n## How the scores have moved\n\n### Finnhub\n\nNo score change since it was listed.\n\n### Massive (formerly Polygon.io)\n\n- +3.2 on 1 November 2026 (B to BB): product, correction\n- +0.1 on 27 October 2026: checklist\n- -0.2 on 8 October 2026 (BB to B): checklist\n\n## Verdicts\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**Massive (formerly Polygon.io).** 24 US stock routes over x402 at agent.massive.com, $0.01 each on Base, and only successful requests are charged. The status history lists 14 partial incidents in the 90 days to 1 November, including US equity aggregate bars missing for about 16 hours on 8 and 9 September.\n\n## Before you call either\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### Massive (formerly Polygon.io)\n\n1. Send the key as a Bearer header, not `?apiKey=`, so it stays out of logs\n2. Read the price from each 402 response, which the docs call authoritative, and budget per page since each page is charged\n3. Use agent.massive.com only for US stocks. Options, crypto, forex and futures need a keyed plan\n4. Check `massive-status.com` when aggregates look stale, since several incidents since August were bars that stopped updating or went missing\n5. Don't republish prices fetched on an individual plan\n\n## Questions\n\n### Which is better for AI agents, Finnhub or Massive (formerly Polygon.io)?\n\nMassive (formerly Polygon.io) scores 73.1 (BB) on agent readiness against Finnhub's 45.1 (E), and leads in every scored category.\n\n### Do Finnhub and Massive (formerly Polygon.io) need an API key?\n\nFinnhub takes an API key or an OAuth sign-in. Massive (formerly Polygon.io) needs an API key. An agent can also pay Massive (formerly Polygon.io) per call over x402, with no account.\n\n### Can an agent call Finnhub and Massive (formerly Polygon.io) without installing anything?\n\nYes. Finnhub has a hosted endpoint at https://finnhub.io/api/v1 and Massive (formerly Polygon.io) at https://api.massive.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/finnhub-vs-massive.json, and with the fewest tokens: https://www.anchorterminal.com/compare/finnhub-vs-massive.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"finnhub\", \"b\": \"massive\"}`. From a terminal: `anchor compare finnhub massive`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/finnhub.json and https://www.anchorterminal.com/api/v1/tools/massive.json\n\n## Other comparisons with Finnhub or Massive (formerly Polygon.io)\n\n- [Alpha Vantage vs Finnhub](https://www.anchorterminal.com/compare/alpha-vantage-vs-finnhub.md)\n- [Alpha Vantage vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/alpha-vantage-vs-massive.md)\n- [Benzinga vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/benzinga-vs-massive.md)\n- [Databento vs Finnhub](https://www.anchorterminal.com/compare/databento-vs-finnhub.md)\n- [Databento vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/databento-vs-massive.md)\n- [Financial Datasets vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/financial-datasets-vs-massive.md)\n- [Financial Modeling Prep vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/financial-modeling-prep-vs-massive.md)\n- [Finnhub vs Intrinio](https://www.anchorterminal.com/compare/finnhub-vs-intrinio.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- [Intrinio vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/intrinio-vs-massive.md)\n- [Massive (formerly Polygon.io) vs Tiingo](https://www.anchorterminal.com/compare/massive-vs-tiingo.md)\n- [Massive (formerly Polygon.io) vs Twelve Data](https://www.anchorterminal.com/compare/massive-vs-twelve-data.md)\n- [Financial Datasets vs Finnhub](https://www.anchorterminal.com/compare/financial-datasets-vs-finnhub.md)\n- [Financial Modeling Prep vs Finnhub](https://www.anchorterminal.com/compare/financial-modeling-prep-vs-finnhub.md)\n- [EODHD vs Finnhub](https://www.anchorterminal.com/compare/eodhd-vs-finnhub.md)\n- [EODHD vs Massive (formerly Polygon.io)](https://www.anchorterminal.com/compare/eodhd-vs-massive.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": "Finnhub vs Massive (formerly Polygon.io)",
        "url": ""
      }
    ],
    "description": "Massive scores 73.1 (BB) to Finnhub's 45.1 (E) for market prices. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Finnhub E 45.1",
      "Massive (formerly Polygon.io) BB 73.1",
      "scores"
    ],
    "h1": "Finnhub vs Massive (formerly Polygon.io)",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/finnhub-vs-massive",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Finnhub vs Massive for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-03",
    "url": "https://www.anchorterminal.com/compare/finnhub-vs-massive"
  },
  "tokens": {
    "markdown": 4600,
    "slim": 2830
  },
  "version": 1
}
