{
  "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"
  },
  "tool": {
    "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"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 48,
          "points": 9.6,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 58,
          "points": 9.43,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 56,
          "points": 9.1,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 32,
          "points": 5.6,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 30,
          "points": 3.75,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 60,
          "points": 5.25,
          "reason": "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.",
          "checked": "2026-11-03"
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 27,
          "points": 2.36,
          "note": "editorial 8, provenance 45",
          "reason": "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.",
          "checked": "2026-11-03"
        }
      ],
      "assessment": {
        "date": "2026-11-03",
        "basis": "public evidence",
        "confidence": "low",
        "notes": {
          "ergonomics": "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.",
          "maintenance": "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.",
          "payments": "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.",
          "reliability": "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.",
          "schema": "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.",
          "security": "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.",
          "transparency": "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."
        },
        "sources": [
          {
            "what": "Swagger 2.0 document, 116 paths",
            "url": "https://finnhub.io/static/swagger.json",
            "seen": "2026-11-03"
          },
          {
            "what": "docs page with embedded API document, authentication and rate limit sections",
            "url": "https://finnhub.io/docs/api/rate-limit",
            "seen": "2026-11-03"
          },
          {
            "what": "MCP connection page, 70 tools, OAuth",
            "url": "https://finnhub.io/static/finnhub-how-to-connect-mcp-server.html",
            "seen": "2026-11-03"
          },
          {
            "what": "pricing page (prices in script data, limits in the page bundle)",
            "url": "https://finnhub.io/pricing",
            "seen": "2026-11-03"
          },
          {
            "what": "home page (SLA statement)",
            "url": "https://finnhub.io/",
            "seen": "2026-11-03"
          },
          {
            "what": "GitHub organisation, six client libraries",
            "url": "https://github.com/Finnhub-Stock-API",
            "seen": "2026-11-03"
          },
          {
            "what": "finnhub-go commits (2 November 2026)",
            "url": "https://github.com/Finnhub-Stock-API/finnhub-go/commits/master",
            "seen": "2026-11-03"
          },
          {
            "what": "PyPI finnhub-python 2.4.29",
            "url": "https://pypi.org/project/finnhub-python/",
            "seen": "2026-11-03"
          },
          {
            "what": "robots.txt (disallows terms and FAQ)",
            "url": "https://finnhub.io/robots.txt",
            "seen": "2026-11-03"
          },
          {
            "what": "MCP endpoint without a token, 401",
            "url": "https://mcp.finnhub.io/mcp",
            "seen": "2026-11-03"
          },
          {
            "what": "quote endpoint without a key, 401",
            "url": "https://finnhub.io/api/v1/quote?symbol=AAPL",
            "seen": "2026-11-03"
          },
          {
            "what": "privacy page (redirects to home)",
            "url": "https://finnhub.io/privacy",
            "seen": "2026-11-03"
          },
          {
            "what": "security.txt (redirects to home)",
            "url": "https://finnhub.io/.well-known/security.txt",
            "seen": "2026-11-03"
          }
        ],
        "openQuestions": [
          "unchecked: the terms of service at finnhub.io/terms-of-service, because robots.txt disallows the path; the pricing page says every self-serve plan is personal use with the terms applying",
          "unchecked: the FAQ at finnhub.io/faq, also disallowed by robots.txt",
          "unchecked: the hosted MCP server's tool definitions and annotations, which need an OAuth login; the count of 70 is the vendor's",
          "No privacy policy was found; /privacy redirects to the home page. Whether one exists behind the login is unknown",
          "The legal entity, address and governing law were not found on any page we could read",
          "Which operations a free key reaches. The API document flags 87 of 116 as premium and 3 as free tier, which leaves 26 unmarked; we counted the 29 unflagged operations as free",
          "Whether the 2 November 2026 library commits reflect a new price target history endpoint in the hosted API, since the Swagger document carries no date",
          "firstReleased is left empty. No first-hand launch date was found and RDAP for the .io domain gave no events",
          "Pricing and limits were read from script data embedded in the public pricing page and bundle, because the page renders by script"
        ]
      },
      "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
      },
      "scoreHistory": [
        {
          "date": "2026-11-03",
          "grade": "E",
          "kind": "listed",
          "method": "0.7",
          "score": 45.1
        }
      ]
    },
    "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"
    },
    "notable": [
      "A public Swagger 2.0 document lists 116 paths under https://finnhub.io/api/v1, every operation with a summary and description, 248 query parameters without enums, and only a 200 response each (https://finnhub.io/static/swagger.json)",
      "The docs page embeds the same document with extra sections. Its rate limit section says a 429 comes back when the plan limit is exceeded, and that a 30 API calls a second limit applies on top of every plan (https://finnhub.io/docs/api/rate-limit)",
      "The hosted MCP server at https://mcp.finnhub.io/mcp, published 6 August 2026, exposes 70 tools behind OAuth, and each call counts against the account's API limits (https://finnhub.io/static/finnhub-how-to-connect-mcp-server.html)",
      "Official client libraries for Python (1,095 stars), Go, JavaScript, Ruby, Kotlin and PHP in the Finnhub-Stock-API organisation; finnhub-go, finnhub-ruby and finnhub-php were updated on 2 November 2026 with a price target history endpoint (https://github.com/Finnhub-Stock-API)",
      "finnhub.io/robots.txt disallows /terms-of-service and /faq, so the terms were not read; /privacy and /about redirect to the home page (https://finnhub.io/robots.txt)",
      "The pricing and docs pages render by script; prices come from a `serverData.price` object in the page and limits from the page bundle, both read from the public HTML and JavaScript (https://finnhub.io/pricing)"
    ],
    "area": "domain-data",
    "details": [
      {
        "label": "Surface listed",
        "value": "The REST API at finnhub.io/api/v1 and the hosted MCP server at mcp.finnhub.io/mcp, read from the Swagger document, the docs page's embedded data, the pricing page's script data, the MCP connection page, the GitHub organisation and PyPI on 3 November 2026. No account was made and no tool was called"
      },
      {
        "label": "Reader note",
        "value": "finnhub.io pages render by script. The docs page embeds the full API document as JSON and the pricing page embeds its prices, so both were read from the public HTML and bundle. robots.txt disallows /terms-of-service and /faq, which were not read"
      },
      {
        "label": "API",
        "value": "116 paths, 115 GET and one POST (/ai-chat), grouped as stock prices and candles, fundamentals and metrics, estimates, filings and transcripts, ownership, ETFs and funds, forex, crypto, bonds, economic data and alternative data. 87 operations carry a premium marker"
      },
      {
        "label": "Rate limits",
        "value": "60 calls a minute on the free key; 150, 300 and 900 a minute on market data plans; 900 market data and 300 fundamental calls a minute on All-In-One; a 30 calls a second limit on top of every plan; 429 when exceeded. Enterprise is unlimited per the pricing page"
      },
      {
        "label": "MCP server",
        "value": "Streamable HTTP at mcp.finnhub.io/mcp with OAuth against the Finnhub account, 70 tools grouped by fundamentals, estimates, earnings and filings, funds, forex and crypto, economic and alternative data. An unauthenticated GET answers 401 with resource metadata. Needs a paid Claude or ChatGPT plan for custom connectors"
      },
      {
        "label": "Real-time data",
        "value": "The quote endpoint is real time for US stocks per its description, with international real-time prices for enterprise clients through a partner feed. A websocket at ws.finnhub.io streams trades"
      },
      {
        "label": "Errors",
        "value": "401 with a JSON `error` field without a key in our one test call, and a documented 429 over the limit. No other error responses documented"
      },
      {
        "label": "SDKs",
        "value": "finnhub-python 2.4.29 (24 June 2026, Apache-2.0), finnhub-go, finnhub-js, finnhub-ruby, finnhub-kotlin and finnhub-php, generated from the API document"
      },
      {
        "label": "Use terms",
        "value": "Every self-serve plan is marked Personal Use with the terms applying; enterprise plans carry commercial use and redistribution rights. The terms themselves were not read because robots.txt disallows the page"
      },
      {
        "label": "Legal entity",
        "value": "Not found. The GitHub organisation gives New York, NY, and the site names only Finnhub with sales, support and billing addresses at finnhub.io"
      }
    ],
    "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,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Finnhub",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "finnhub.io, no registry record we could read",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "finnhub.io",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "published, but our reader couldn't read it",
          "points": 7,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "People named",
          "value": "not researched yet",
          "points": 0,
          "max": 0,
          "state": "na"
        },
        {
          "check": "Support route",
          "value": "a support address, help pages, a community",
          "points": 5,
          "max": 5,
          "state": "ok"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://finnhub.io/terms-of-service",
          "state": "unreadable",
          "reason": "robots.txt asks readers like ours not to fetch it",
          "readAt": "2026-11-03",
          "points": 7,
          "max": 10
        },
        {
          "kind": "privacy",
          "url": "",
          "state": "none-found",
          "points": 0,
          "max": 10
        }
      ]
    },
    "humans": {
      "slug": "finnhub",
      "checked": "2026-11-03",
      "company": "Finnhub",
      "peopleNote": "No founder or named person was found on a first-hand page. finnhub.io has no about page (/about redirects to the home page), the GitHub organisation names no members and gives New York, NY as its location, the MCP page names only Finnhub, and the terms page is disallowed by robots.txt. Investors were looked for on the home page, the pricing page, the MCP page and the GitHub organisation, and in two searches; nothing first-hand mentions funding, backers or a legal entity.",
      "companySocial": {
        "linkedin": "https://www.linkedin.com/company/51658500",
        "x": "https://x.com/Finnhub_io",
        "github": "https://github.com/Finnhub-Stock-API"
      },
      "support": {
        "emails": [
          "support@finnhub.io"
        ],
        "urls": [
          "https://finnhub.io/docs/api",
          "https://finnhub.io/static/finnhub-how-to-connect-mcp-server.html"
        ],
        "community": [
          {
            "label": "finnhub-python issues",
            "url": "https://github.com/Finnhub-Stock-API/finnhub-python/issues",
            "kind": "github"
          }
        ],
        "contactEmails": [
          "sales@finnhub.io",
          "billing@finnhub.io"
        ]
      },
      "sources": [
        "https://finnhub.io/",
        "https://finnhub.io/pricing",
        "https://finnhub.io/static/finnhub-how-to-connect-mcp-server.html",
        "https://finnhub.io/static/swagger.json",
        "https://github.com/Finnhub-Stock-API",
        "https://finnhub.io/robots.txt"
      ],
      "ownership": {
        "status": "unknown",
        "checked": "2026-11-03",
        "sources": [
          "https://finnhub.io/",
          "https://github.com/Finnhub-Stock-API"
        ]
      }
    },
    "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"
    }
  }
}
