{
  "name": "Broker API Hub: market data source directory",
  "licence": "CC BY 4.0",
  "licenceUrl": "https://creativecommons.org/licenses/by/4.0/",
  "cite": "Broker API Hub, market data source directory, openbrokerapi.com/data-sources, with the date you downloaded it",
  "howToRead": "Each fact has a basis. 'stated' was read on the page given as its source. 'not-found' means pages were opened and none stated it, which is neither yes nor no. 'not-verified' means the page could not be opened. Quoted wording is the vendor's own and stays the vendor's. This is not legal advice and inclusion is not a recommendation.",
  "newestCheck": "2026-10-09",
  "records": [
    {
      "id": "alpha-vantage",
      "name": "Alpha Vantage",
      "vendor": "Alpha Vantage Inc.",
      "kind": "paid-vendor",
      "broker": null,
      "note": null,
      "covers": {
        "value": "'From traditional asset classes (e.g., stocks, ETFs, mutual funds, market indices) to economic indicators, from foreign exchange rates to commodities'.",
        "basis": "stated",
        "source": "https://www.alphavantage.co/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "'a set of powerful and developer-friendly data APIs and spreadsheets'. The page title reads 'Free Stock APIs in JSON & Excel'.",
        "basis": "stated",
        "source": "https://www.alphavantage.co/",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'We are pleased to provide free stock API service covering the majority of our datasets for 25 API requests per day and unlimited API requests for verified open-source or educational projects.'",
        "basis": "stated",
        "source": "https://www.alphavantage.co/support/",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "Monthly premium plans by request rate, from '75 requests/min + premium support: $49.99/month' to '1200 requests/min + premium support: $249.99/month'. The premium page describes the free limit as 'our standard API usage limit (25 API requests per day)'.",
        "basis": "stated",
        "source": "https://www.alphavantage.co/premium/",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "The terms of service grant use 'for personal, non-commercial use, unless you and Alpha Vantage have agreed otherwise in writing'. Use counts as commercial where 'You plan to use or provide information accessed through the Alpha Vantage Platform as part of any type of commercial activity that allows individuals or entities other than User to access information directly or indirectly'. The word redistribute does not appear in the document.",
        "basis": "stated",
        "source": "https://www.alphavantage.co/terms_of_service/",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the terms of service, which contain no clause on machine learning, AI or model training. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://www.alphavantage.co/terms_of_service/",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://www.alphavantage.co/",
          "title": "Alpha Vantage: home"
        },
        {
          "url": "https://www.alphavantage.co/support/",
          "title": "Alpha Vantage: support"
        },
        {
          "url": "https://www.alphavantage.co/premium/",
          "title": "Alpha Vantage: premium"
        },
        {
          "url": "https://www.alphavantage.co/terms_of_service/",
          "title": "Alpha Vantage: terms of service (PDF)"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "bank-of-england-database",
      "name": "Bank of England database",
      "vendor": "Bank of England",
      "kind": "free-public",
      "broker": null,
      "note": null,
      "covers": {
        "value": "'Browse, visualise and export the data series published by the Bank of England'. The database's quick links include interest and exchange rates data.",
        "basis": "stated",
        "source": "https://www.bankofengland.co.uk/boeapps/database/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened. Depth differs by series.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Files. The help page describes Excel, HTML, XML and CSV downloads.",
        "basis": "stated",
        "source": "https://www.bankofengland.co.uk/boeapps/database/help.asp",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "No charge and no request limit are stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "No price is stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "'The information made available via the Database is the copyright of the Governor and Company of the Bank, unless otherwise stated. Reproduction of data in the Database is subject to the terms of the UK Open Government Licence, allowing and encouraging free and flexible data reuse.' With an exception: 'selected exchange rate data and series are excluded from this licence as they are reproduced by the Bank under licence from third parties. In these instances, you are advised to contact us directly for permission if you wish to reproduce this information.'",
        "basis": "stated",
        "source": "https://www.bankofengland.co.uk/legal",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened. The legal page mentions AI only about the Bank's own communications. The Open Government Licence itself was not opened. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://www.bankofengland.co.uk/legal",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://www.bankofengland.co.uk/boeapps/database/",
          "title": "Bank of England: database"
        },
        {
          "url": "https://www.bankofengland.co.uk/boeapps/database/help.asp",
          "title": "Bank of England: database help"
        },
        {
          "url": "https://www.bankofengland.co.uk/legal",
          "title": "Bank of England: legal"
        }
      ],
      "documentsNotOpened": [
        {
          "url": "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",
          "what": "Open Government Licence v3.0",
          "why": "Not opened on this reading."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "binance-public-data",
      "name": "Binance public data",
      "vendor": "Binance",
      "kind": "broker-published",
      "broker": null,
      "note": "Binance is a crypto exchange and has no broker record on this site. The terms were read in the project's own repository on GitHub.",
      "covers": {
        "value": "'The website Binance Data Collection offers easy access for anyone to download Binance's public market data, which is aggregated into daily or monthly files.' The page documents spot, USD-M futures and COIN-M futures files, including aggregate trades and klines.",
        "basis": "stated",
        "source": "https://github.com/binance/binance-public-data",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Files. 'All symbols are supported, with new daily data becoming available the next day and new monthly data at the first monday of the month.' The repository holds Python and shell download scripts.",
        "basis": "stated",
        "source": "https://github.com/binance/binance-public-data",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'Binance grants any individual or legal entity (\"you\" or \"your\") access to the Datasets free of charge subject to the terms set forth in these Vision Dataset Terms.' Section 7 requires users to keep to posted rate limits, which were not read.",
        "basis": "stated",
        "source": "https://github.com/binance/binance-public-data/blob/master/TERMS_AND_CONDITIONS.md",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "No charge for non-commercial use. 'Commercial licensing is strictly excluded under this agreement; any commercial utilization requires a separate, written enterprise data license agreement executed with Binance.'",
        "basis": "stated",
        "source": "https://github.com/binance/binance-public-data/blob/master/TERMS_AND_CONDITIONS.md",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "The terms, 'Last Updated: August 26, 2026': 'Datasets are provided to You under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License'. 'You shall not license, sub-license, sell, rent, lease, host, or commercially exploit the Datasets or any derivative real-time or historical data feeds.' 'You shall ensure that any redistributed derivative work based on the Datasets provides appropriate attribution to Binance Vision and remains licensed under the identical CC BY-NC-SA 4.0 terms'.",
        "basis": "stated",
        "source": "https://github.com/binance/binance-public-data/blob/master/TERMS_AND_CONDITIONS.md",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Model training is not named in the terms. Two clauses bear on it. 'Use of any data derived from, calculated with, or extracted from the Datasets (including charts, models, and derivative analytical indicators) is strictly governed by these Vision Dataset Terms.' And permitted uses 'are limited to academic research, non-monetized open educational projects, algorithmic historical backtesting for purely personal non-production research, and non-commercial open-source data science evaluations'. Silence on training is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://github.com/binance/binance-public-data/blob/master/TERMS_AND_CONDITIONS.md",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No library is named. The repository holds a folder of Python download scripts.",
        "basis": "not-found",
        "source": "https://github.com/binance/binance-public-data",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://github.com/binance/binance-public-data",
          "title": "binance-public-data repository on GitHub"
        },
        {
          "url": "https://github.com/binance/binance-public-data/blob/master/TERMS_AND_CONDITIONS.md",
          "title": "Binance Vision dataset terms and conditions"
        },
        {
          "url": "https://data.binance.vision/",
          "title": "Binance Data Collection"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "companies-house",
      "name": "Companies House",
      "vendor": "Companies House (UK government)",
      "kind": "free-public",
      "broker": null,
      "note": null,
      "covers": {
        "value": "'The Companies House API lets you retrieve information about limited companies (and other companies that fall within the Companies Act 2006). The data returned is live and real-time'.",
        "basis": "stated",
        "source": "https://developer.company-information.service.gov.uk/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "A REST API, and bulk files: 'The company data product is a free monthly snapshot of information for live companies on the public register', as ZIP files of CSV.",
        "basis": "stated",
        "source": "https://www.gov.uk/guidance/companies-house-data-products",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'You can make up to 600 requests within a five-minute period. If you exceed this limit, you will receive a 429 Too Many Requests HTTP status code'.",
        "basis": "stated",
        "source": "https://developer-specs.company-information.service.gov.uk/guides/rateLimiting",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "The bulk company data product is described as 'free'. No price for the API is stated on the pages opened.",
        "basis": "stated",
        "source": "https://www.gov.uk/guidance/companies-house-data-products",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "'We impose no rules or requirements on how the information on the public register is used, and we're not responsible for your use of the company data. You are responsible for complying with any applicable data protection, copyright and other legislation and regulations. You should check that you've met all the necessary legal requirements before you publish any information.'",
        "basis": "stated",
        "source": "https://www.gov.uk/guidance/companies-house-data-products",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened. The sentence above on use of the register is general and does not mention models. The register holds personal data about officers, and the page points to data protection law. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://www.gov.uk/guidance/companies-house-data-products",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://developer.company-information.service.gov.uk/",
          "title": "Companies House: developer hub"
        },
        {
          "url": "https://developer-specs.company-information.service.gov.uk/guides/rateLimiting",
          "title": "Companies House API: rate limiting"
        },
        {
          "url": "https://www.gov.uk/guidance/companies-house-data-products",
          "title": "GOV.UK: Companies House data products"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "databento",
      "name": "Databento",
      "vendor": "Databento, Inc.",
      "kind": "paid-vendor",
      "broker": null,
      "note": "The pricing page is drawn by script and was read through a fetch tool that returns the page text. Wording from it is recorded as that tool returned it. The terms page returned no readable text, so the licence itself was not read.",
      "covers": {
        "value": "'Licensed distributor for 50+ trading venues.' 'Simple APIs for futures, options, and equities.' 'Tick data, full order book, and more.'",
        "basis": "stated",
        "source": "https://databento.com/historical",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "'Up to 16 years of historical data.'",
        "basis": "stated",
        "source": "https://databento.com/historical",
        "checked": "2026-10-09"
      },
      "delivery": {
        "value": "'Databento works with any language through our Raw API, which uses a binary protocol over TCP, and our HTTP API. We also provide client libraries for Rust, Python, and C++.' The same page describes 'Real-time, intraday, and historical data.'",
        "basis": "stated",
        "source": "https://databento.com/historical",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "No standing free tier is stated. New accounts are offered credit: 'New users get $125 in free credits that can be used towards historical data from any of our datasets.' 'Credits expire 6 months after signup and each team is eligible for one set of credits.'",
        "basis": "stated",
        "source": "https://databento.com/pricing",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "The pricing page is drawn by script. Read as raw page text on 9 October 2026 it shows no plan prices, so the plan prices are not verified here. Open the page itself for current prices.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "From the question 'Can I redistribute your data?' on the pricing page: 'Your redistribution rights depend on the dataset.' 'Most of our datasets can be redistributed internally or externally after 24 hours.' The terms that govern this were not read.",
        "basis": "stated",
        "source": "https://databento.com/pricing",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened. Silence is neither permission nor prohibition. The terms page could not be read.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "'We also provide client libraries for Rust, Python, and C++.' The page's Python sample begins 'import databento as db'.",
        "basis": "stated",
        "source": "https://databento.com/historical",
        "checked": "2026-10-09"
      },
      "partnerProgramme": {
        "value": "No affiliate, referral, partner or reseller programme page was found on Databento's own site. The contact page has a Partnerships heading that reads 'We work with trading venues, brokerages, vendors, universities, and more.' followed by an Email us link, and says nothing about commission, referral credit or resale. The site's own sitemap of marketing pages, opened the same day, lists no address containing affiliate, referral or reseller, and the only addresses containing partner are glossary entries under /compliance. The startups page offers new accounts '$125 in free credits' and describes no referral scheme. Not finding a page is not proof that no arrangement exists. No form was submitted and nobody was contacted.",
        "basis": "not-found",
        "source": "https://databento.com/contact",
        "checked": "2026-10-09"
      },
      "pagesOpened": [
        {
          "url": "https://databento.com/historical",
          "title": "Databento: historical data"
        },
        {
          "url": "https://databento.com/pricing",
          "title": "Databento: pricing"
        },
        {
          "url": "https://databento.com/startups",
          "title": "Databento: market data for startups"
        },
        {
          "url": "https://databento.com/contact",
          "title": "Databento: contact"
        },
        {
          "url": "https://databento.com/about",
          "title": "Databento: about"
        },
        {
          "url": "https://databento.com/marketing/sitemap-0.xml",
          "title": "Databento: sitemap of marketing pages"
        }
      ],
      "documentsNotOpened": [
        {
          "url": "https://databento.com/legal",
          "what": "Terms and conditions",
          "why": "The address answered with a page shell that carries no terms text without running its script, in two separate readings."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "dukascopy-historical-data",
      "name": "Dukascopy historical data",
      "vendor": "Dukascopy Bank SA",
      "kind": "broker-published",
      "broker": "dukascopy",
      "note": "The historical data page is a tool drawn by script. Its text carries the title 'Forex Historical Data Export' and no description of instruments, depth or format, so those are not recorded. The website terms of use were read in full.",
      "covers": {
        "value": "Not stated in the text of the pages opened. The page is titled 'Forex Historical Data Export' and the tool itself did not return text.",
        "basis": "not-found",
        "source": "https://www.dukascopy.com/swiss/english/marketwatch/historical/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Not stated on the pages opened. The page title calls it an export.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "freeTier": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "No price is stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "The website terms of use cover everything on the site. 'you agree to use the WEBSITE solely for your own non-commercial use and benefit, and not for resale or other transfer or disposition to, or use by or for the benefit of, any other person or entity.' 'you may download material from the WEBSITE and/or make one print copy for your own personal, non-commercial use'. They also forbid automated collection: 'You shall not use or attempt to use any 'scraper,' 'robot,' 'bot,' 'spider,' 'data mining,' 'computer code,' or any other automate device, program, tool, algorithm, process or methodology to access, acquire, copy, or monitor any portion of the WEBSITE, any data or content found on or accessed through the WEBSITE, or any other WEBSITE information without the prior express written consent of DUKASCOPY.'",
        "basis": "stated",
        "source": "https://www.dukascopy.com/swiss/english/legal-pages/terms-of-use/",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the website terms of use, which contain no clause on machine learning or model training. The clauses above on non-commercial use and on automated tools apply to any use. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://www.dukascopy.com/swiss/english/legal-pages/terms-of-use/",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://www.dukascopy.com/swiss/english/marketwatch/historical/",
          "title": "Dukascopy: historical data export"
        },
        {
          "url": "https://www.dukascopy.com/swiss/english/fx-market-tools/historical-data/",
          "title": "Dukascopy: historical data export tool"
        },
        {
          "url": "https://www.dukascopy.com/swiss/english/legal-pages/terms-of-use/",
          "title": "Dukascopy: website terms of use"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "ecb-reference-rates",
      "name": "ECB euro foreign exchange reference rates",
      "vendor": "European Central Bank",
      "kind": "free-public",
      "broker": null,
      "note": null,
      "covers": {
        "value": "Daily reference rates, 'All currencies quoted against the euro'. 'The reference rates are usually updated at around 16:00 CET every working day, except on TARGET closing days.' 'The reference rates are published for information purposes only. Using the rates for transaction purposes is strongly discouraged.'",
        "basis": "stated",
        "source": "https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "A full time series is offered for download. Its start date is not stated in the text read.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Files: the latest rates as PDF, CSV and XML, and the time series as 'CSV (.zip)', 'XML', 'XML (last 90 days only)' and 'XML (SDMX-ML)'. The ECB Data Portal also has an API: 'The ECB SDMX 2.1 RESTful web service offers programmatic access to the statistical data and metadata disseminated via the ECB Data Portal.'",
        "basis": "stated",
        "source": "https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'users of this website may make free use of the information obtained directly from it subject to the following conditions'. No request limit is stated on the pages opened.",
        "basis": "stated",
        "source": "https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "No charge. The disclaimer says the information 'may be obtained free of charge through this website'.",
        "basis": "stated",
        "source": "https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "Allowed with conditions. 'When such information is distributed or reproduced, it must appear accurately and the ECB must be cited as the source.' Where it is put into documents that are sold, the publisher 'must inform buyers, both before they pay any subscription or fee and each time they access the information taken from this website, that the information may be obtained free of charge through this website'. 'If the information is modified by the user (e.g. by seasonal adjustment of statistical data or calculation of growth rates) this must be stated explicitly.' The disclaimer names an exception that was not read in full.",
        "basis": "stated",
        "source": "https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened. The disclaimer mentions AI only about how the ECB drafts its own material. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html",
          "title": "ECB: euro foreign exchange reference rates"
        },
        {
          "url": "https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html",
          "title": "ECB: disclaimer and copyright"
        },
        {
          "url": "https://data.ecb.europa.eu/help/api/overview",
          "title": "ECB Data Portal: API overview"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "eodhd",
      "name": "EODHD (EOD Historical Data)",
      "vendor": "EOD Historical Data",
      "kind": "paid-vendor",
      "broker": null,
      "note": "Prices were shown in pounds sterling when the page was opened from the United Kingdom.",
      "covers": {
        "value": "'Market Data API for Stocks, ETFs & Forex'. 'Access real-time, historical, and end-of-day financial data.' The home page counts '60 Stock exchanges', '150 000 Tickers', '20 000 ETFs', '600 Indices' and '1100 Forex pairs'.",
        "basis": "stated",
        "source": "https://eodhd.com/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "'Actual depth varies by API (e.g. EOD 30+ yrs, intraday since 2004, macro since 1960), so check each API's own docs for its exact coverage.' The plan table reads '1 yr' on the free plan and '30+ yrs' on the paid plans.",
        "basis": "stated",
        "source": "https://eodhd.com/pricing",
        "checked": "2026-10-09"
      },
      "delivery": {
        "value": "'EODHD works with REST calls, Python scripts, and AI-agent workflows.'",
        "basis": "stated",
        "source": "https://eodhd.com/",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'Free Package' at '£0 /mo.' The plan table gives it 20 API calls a day, 20 requests a minute and a history depth of '1 yr'.",
        "basis": "stated",
        "source": "https://eodhd.com/pricing",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "Personal plans: 'EOD Historical All-World £19.99 /mo.', 'EOD + Intraday All-World Extended £29.99 /mo.', 'Fundamentals Data Feed £59.99 /mo.', 'ALL-IN-ONE Package £99.99 /mo.' Commercial plans are listed separately and were not read.",
        "basis": "stated",
        "source": "https://eodhd.com/pricing",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "On personal use: 'Non-Professional Users are permitted to store, manipulate, and analyze the data for private, non-commercial purposes. However, they are prohibited from: Sharing access to their account with others, including within groups. Selling, reselling, retransmitting, redistributing, displaying, or granting access to the Information or Services, whether in its original or repackaged form.'",
        "basis": "stated",
        "source": "https://eodhd.com/financial-apis/terms-conditions",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the terms and conditions, which contain no clause on machine learning or model training. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://eodhd.com/financial-apis/terms-conditions",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "The home page lists 'Coding Libraries' as 'Python · R · Node.js · PHP · Java'. The package name was not read.",
        "basis": "stated",
        "source": "https://eodhd.com/",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://eodhd.com/",
          "title": "EODHD: home"
        },
        {
          "url": "https://eodhd.com/pricing",
          "title": "EODHD: pricing"
        },
        {
          "url": "https://eodhd.com/financial-apis/terms-conditions",
          "title": "EODHD: terms and conditions"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "finnhub",
      "name": "Finnhub",
      "vendor": "Finnhub",
      "kind": "paid-vendor",
      "broker": null,
      "note": "Only the terms of service returned readable text. The home, pricing and documentation pages are drawn by script and returned a title and nothing else, so the free tier and prices are not verified.",
      "covers": {
        "value": "The site's title reads 'Finnhub Stock APIs - Real-time stock prices, Company fundamentals, Estimates, and Alternative data.'",
        "basis": "stated",
        "source": "https://finnhub.io/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not verified. The pages that would state it returned no readable text.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Not verified. The documentation page returned no readable text.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "freeTier": {
        "value": "Not verified. The pricing page returned no readable text. The terms of service say of every plan: 'There is a 30 API calls/second limit on top of all plan's limit'.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "Not verified. The pricing page returned no readable text.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "'You hereby agree to not redistribute or share access to data or derived results from the data obtained from Finnhub with anyone or any 3rd party without written approval from Finnhub.' 'All plan listed on Finnhub website is strictly for personal use unless explicitly stated otherwise. Personal plan can't be used by any business even internally without a written approval.'",
        "basis": "stated",
        "source": "https://finnhub.io/terms-of-service",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the terms of service, which contain no clause on machine learning, AI or model training. Note that the redistribution clause above covers 'derived results from the data'. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://finnhub.io/terms-of-service",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "Not verified. The documentation page returned no readable text.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://finnhub.io/",
          "title": "Finnhub: home (title only)"
        },
        {
          "url": "https://finnhub.io/terms-of-service",
          "title": "Finnhub: terms of service"
        }
      ],
      "documentsNotOpened": [
        {
          "url": "https://finnhub.io/pricing",
          "what": "Pricing",
          "why": "Answered, but with no readable text without running its script."
        },
        {
          "url": "https://finnhub.io/docs/api",
          "what": "API documentation",
          "why": "Answered, but with no readable text without running its script."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "fred",
      "name": "FRED (Federal Reserve Economic Data)",
      "vendor": "Federal Reserve Bank of St. Louis",
      "kind": "free-public",
      "broker": null,
      "note": null,
      "covers": {
        "value": "The site describes FRED as 'Tools and resources to find and use economic data worldwide'.",
        "basis": "stated",
        "source": "https://fred.stlouisfed.org/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened. Depth differs by series.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "'The FRED® API is based on the REST web service architecture.' 'Our API accommodates any programming language that can parse XML or JSON and communicate with our servers using HTTPS.'",
        "basis": "stated",
        "source": "https://fred.stlouisfed.org/docs/api/fred/overview.html",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "No charge and no request limit are stated on the pages opened. An API key is needed: 'you cannot request or view your API keys without first logging into your fredaccount'.",
        "basis": "stated",
        "source": "https://fred.stlouisfed.org/docs/api/api_key.html",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "No price is stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "It depends on who owns the series. 'Data series available through the FRED® API, may be owned by third parties and subject to copyright restrictions.' 'Before using data series owned by third parties for anything other than your own personal use, you must contact the data owner to obtain permission. The Federal Reserve Bank of St. Louis cannot give you such permission'. 'Copyrighted series contain the word 'Copyright' in their notes.'",
        "basis": "stated",
        "source": "https://fred.stlouisfed.org/docs/api/terms_of_use.html",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the API terms of use, which contain no clause on machine learning, AI or model training. The clause on third party series above applies to any use beyond personal use. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://fred.stlouisfed.org/docs/api/terms_of_use.html",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://fred.stlouisfed.org/",
          "title": "FRED: home"
        },
        {
          "url": "https://fred.stlouisfed.org/docs/api/fred/overview.html",
          "title": "FRED API overview"
        },
        {
          "url": "https://fred.stlouisfed.org/docs/api/api_key.html",
          "title": "FRED API keys"
        },
        {
          "url": "https://fred.stlouisfed.org/docs/api/terms_of_use.html",
          "title": "FRED API terms of use"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "hugging-face-datasets",
      "name": "Hugging Face datasets (category)",
      "vendor": "Hugging Face",
      "kind": "community",
      "broker": null,
      "note": "A category, not one dataset. The platform hosts datasets uploaded by others, and the licence is set per dataset by whoever uploaded it. The dataset documentation pages could not be fetched. The licences page and the terms of service were read.",
      "covers": {
        "value": "The terms of service define the term: 'Dataset refers to a structured collection of data samples used to train machine learning Models.' What any one dataset covers is stated on its own page.",
        "basis": "stated",
        "source": "https://huggingface.co/terms-of-service",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not applicable to a category. It differs by dataset.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Not verified. The dataset documentation pages could not be fetched.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "freeTier": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "No price for downloading a dataset is stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "Per dataset. 'The license can be specified in your repository's README.md file, known as a card on the Hub, in the card's metadata section. Remember to seek out and respect a project's license if you're considering using their code or data.' The terms of service make the uploader answerable for what is posted: 'You are solely responsible for the Content you post'.",
        "basis": "stated",
        "source": "https://huggingface.co/docs/hub/repositories-licenses",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "No single position: it follows each dataset's own licence, and a dataset with no licence stated gives no answer either way. That an uploader posted a dataset does not show they had the right to license it. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://huggingface.co/docs/hub/repositories-licenses",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "Not verified. The documentation page for the datasets library could not be fetched.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://huggingface.co/docs/hub/repositories-licenses",
          "title": "Hugging Face Hub: licences"
        },
        {
          "url": "https://huggingface.co/terms-of-service",
          "title": "Hugging Face: terms of service"
        }
      ],
      "documentsNotOpened": [
        {
          "url": "https://huggingface.co/docs/hub/datasets-cards",
          "what": "Dataset cards documentation",
          "why": "The fetch failed."
        },
        {
          "url": "https://huggingface.co/docs/datasets/index",
          "what": "Datasets library documentation",
          "why": "The fetch failed twice."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "intrinio",
      "name": "Intrinio",
      "vendor": "Intrinio",
      "kind": "paid-vendor",
      "broker": null,
      "note": null,
      "covers": {
        "value": "The feeds listed on the individual plan: 'US Fundamentals', 'US EOD & Historical Data for Stocks', 'US EOD & Historical Data for Options', '15-min delayed Stocks (CBOE ONE)', and real-time price feeds for equities and options.",
        "basis": "stated",
        "source": "https://intrinio.com/pricing",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "The documentation lists a web API, a 'Realtime Stock Prices Websocket' and SDKs for C#, Java, JavaScript, Python, R and Ruby.",
        "basis": "stated",
        "source": "https://docs.intrinio.com/documentation/python",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "No free tier is stated. The plans read 'Free trial available'.",
        "basis": "stated",
        "source": "https://intrinio.com/pricing",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "'Individual AI-Ready, Personal use only $150 /mo'. 'Startup AI-Ready, Commercial use $333 /mo to start', worded as '6 mo at $333, 6 mo at $666, $999 thereafter'. 'Enterprise Custom $1,250 /mo+'.",
        "basis": "stated",
        "source": "https://intrinio.com/pricing",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "The individual plan reads 'No redistribution or display'. The terms of service, 'Effective Date: September 3, 2026', section 2.2: 'you may access and use the Services and Intrinio Data solely for your own internal purposes', and 'Commercialization, redistribution, Display, resale, sublicensing, and other third-party use rights are generally available only under Startup and Enterprise plans subject to an executed Order Form'.",
        "basis": "stated",
        "source": "https://intrinio.com/terms",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Stated, in section 2.3 of the terms of service. 'The restrictions set forth in Section 2.2 apply in full to any use of Intrinio Data in connection with artificial intelligence, machine learning, or automated systems'. Counted as redistribution or display needing extra rights: 'use of Intrinio Data to train, fine-tune, or otherwise embed data into any model or system capable of reproducing, approximating, or revealing the underlying Intrinio Data in its outputs', and 'transmission of Intrinio Data to any third-party AI model provider, large language model API, or externally hosted machine learning service'. Permitted without extra rights 'only where (i) all outputs remain strictly internal to your organization and are not made available to any third party, and (ii) the AI or machine learning system is fully hosted and controlled within your own infrastructure'.",
        "basis": "stated",
        "source": "https://intrinio.com/terms",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "'To install the SDK use PIP: pip install intrinio-sdk'.",
        "basis": "stated",
        "source": "https://docs.intrinio.com/documentation/python",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://intrinio.com/",
          "title": "Intrinio: home"
        },
        {
          "url": "https://intrinio.com/pricing",
          "title": "Intrinio: pricing"
        },
        {
          "url": "https://intrinio.com/terms",
          "title": "Intrinio: terms of service"
        },
        {
          "url": "https://docs.intrinio.com/documentation/python",
          "title": "Intrinio: Python SDK documentation"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "kaggle-datasets",
      "name": "Kaggle datasets (category)",
      "vendor": "Kaggle (Google)",
      "kind": "community",
      "broker": null,
      "note": "A category, not one dataset. No page could be read: the terms and the dataset documentation are drawn by script and returned a title and nothing else. Nothing about this source is recorded. On any platform of this kind the licence is set per dataset, so read the licence on the dataset's own page.",
      "covers": {
        "value": "Not verified. Neither page returned readable text.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "historyDepth": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "freeTier": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "Not verified. No terms page could be read, which says nothing about what the terms allow.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "aiTraining": {
        "value": "Not verified. No terms page could be read, which is neither permission nor prohibition.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [],
      "documentsNotOpened": [
        {
          "url": "https://www.kaggle.com/terms",
          "what": "Terms of use",
          "why": "Returned its title and no other text without running its script."
        },
        {
          "url": "https://www.kaggle.com/docs/datasets",
          "what": "Datasets documentation",
          "why": "Returned its title and no other text, and a second fetch failed."
        }
      ],
      "checked": "2026-10-09",
      "verification": "not-verified"
    },
    {
      "id": "massive",
      "name": "Massive (Polygon.io)",
      "vendor": "Massive.com, Inc.",
      "kind": "paid-vendor",
      "broker": null,
      "note": "The address polygon.io redirected to massive.com when it was opened, and the pages name the company Massive. Only the terms for individuals were read. The terms for businesses were not.",
      "covers": {
        "value": "The site lists its products as 'Stocks Options Indices Currencies Futures'. 'Depending on your plan: tick-level trades, quotes, and aggregate bars. Recency from end-of-day to real-time, up to 20+ years of history.'",
        "basis": "stated",
        "source": "https://massive.com/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "It depends on the plan. The stocks plans on the pricing page read '2 Years Historical Data' on Stocks Basic, '5 Years' on Starter, '10 Years' on Developer and '20+ Years Historical Data' on Advanced.",
        "basis": "stated",
        "source": "https://massive.com/pricing",
        "checked": "2026-10-09"
      },
      "delivery": {
        "value": "The pricing page lists 'Flat Files' and 'WebSockets' among plan features beside API calls. The home page shows a REST client in Python, JavaScript, Go and Java.",
        "basis": "stated",
        "source": "https://massive.com/pricing",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'Stocks Basic' at '$0 /month': 'All US Stocks Tickers', '5 API Calls / Minute', '2 Years Historical Data', 'End of Day Data', marked 'Individual use'.",
        "basis": "stated",
        "source": "https://massive.com/pricing",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "Stocks plans for individuals: Starter '$29 /month', Developer '$79 /month', Advanced '$199 /month', each marked for individual use. Business pricing was not read.",
        "basis": "stated",
        "source": "https://massive.com/pricing",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "The terms for individuals, 'Last Updated: July 18, 2025', grant a right to use the services 'solely for your own personal, non-commercial, and non-business purposes' and forbid 'making unauthorized copies of any content made available on or through the Services'. The word redistribute does not appear in them about data. The terms for businesses were not read.",
        "basis": "stated",
        "source": "https://massive.com/legal/individuals-terms-of-service",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the terms for individuals, which contain no clause on machine learning, AI or model training. The terms for businesses were not read. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://massive.com/legal/individuals-terms-of-service",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "The home page's Python sample begins 'from massive import RESTClient'.",
        "basis": "stated",
        "source": "https://massive.com/",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://massive.com/",
          "title": "Massive: home (reached from polygon.io)"
        },
        {
          "url": "https://massive.com/pricing",
          "title": "Massive: pricing"
        },
        {
          "url": "https://massive.com/legal/terms",
          "title": "Massive: terms of service index"
        },
        {
          "url": "https://massive.com/legal/individuals-terms-of-service",
          "title": "Massive for Individuals Terms of Service"
        }
      ],
      "documentsNotOpened": [
        {
          "url": "https://massive.com/legal/businesses-terms-of-service",
          "what": "Massive for Businesses Terms of Service",
          "why": "Not opened on this reading."
        },
        {
          "url": "https://massive.com/legal/website-terms-of-service",
          "what": "Website Terms of Service",
          "why": "Not opened on this reading."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "nasdaq-data-link",
      "name": "Nasdaq Data Link",
      "vendor": "Nasdaq, Inc.",
      "kind": "paid-vendor",
      "broker": null,
      "note": "No page could be read. Each address answered with a page that shows only its title, 'Financial, Economic and Alternative Data | Nasdaq Data Link', until a script runs, and the documentation site could not be fetched. Nothing about this source is recorded.",
      "covers": {
        "value": "Not verified. No page on data.nasdaq.com returned readable text.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "historyDepth": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "freeTier": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "Not verified. No terms page could be read, which says nothing about what the terms allow.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "aiTraining": {
        "value": "Not verified. No terms page could be read, which is neither permission nor prohibition.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [],
      "documentsNotOpened": [
        {
          "url": "https://data.nasdaq.com/",
          "what": "Home page",
          "why": "Returned its title and no other text without running its script."
        },
        {
          "url": "https://data.nasdaq.com/terms",
          "what": "Terms",
          "why": "Returned its title and no other text without running its script."
        },
        {
          "url": null,
          "what": "Documentation at docs.data.nasdaq.com/docs/getting-started",
          "why": "Returned its title and no other text when first fetched. On 9 Oct 2026 the address redirected to data.nasdaq.com/accesstools, which answered not found, so it is no longer linked. That is not evidence about the documentation itself."
        }
      ],
      "checked": "2026-10-09",
      "verification": "not-verified"
    },
    {
      "id": "sec-edgar",
      "name": "SEC EDGAR",
      "vendor": "U.S. Securities and Exchange Commission",
      "kind": "free-public",
      "broker": null,
      "note": null,
      "covers": {
        "value": "'Currently included in the APIs are the submissions history by filer and the XBRL data from financial statements (forms 10-Q, 10-K,8-K, 20-F, 40-F, 6-K, and their variants).'",
        "basis": "stated",
        "source": "https://www.sec.gov/search-filings/edgar-application-programming-interfaces",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "'EDGAR started in 1994/1995.'",
        "basis": "stated",
        "source": "https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data",
        "checked": "2026-10-09"
      },
      "delivery": {
        "value": "'data.sec.gov was created to host RESTful data APIs delivering JSON-formatted data'. 'The JSON structures are updated throughout the day, in real time, as submissions are disseminated.' A bulk ZIP file is also offered.",
        "basis": "stated",
        "source": "https://www.sec.gov/search-filings/edgar-application-programming-interfaces",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'Anyone can access and download this information for free'. 'Current max request rate: 10 requests/second.' 'Please declare your user agent in request headers'. 'The SEC does not allow botnets or automated tools to crawl the site.' The API page adds: 'These APIs do not require any authentication or API keys to access.'",
        "basis": "stated",
        "source": "https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "No charge: 'Anyone can access and download this information for free'.",
        "basis": "stated",
        "source": "https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "'Information presented on sec.gov is considered public information and may be copied or further distributed by users of the web site without the SEC's permission. Please consider appropriate citation to the SEC as the source.'",
        "basis": "stated",
        "source": "https://www.sec.gov/about/privacy-information",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened, which contain no clause on machine learning, AI or model training. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "No official Python library is named on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://www.sec.gov/search-filings/edgar-application-programming-interfaces",
          "title": "SEC: EDGAR application programming interfaces"
        },
        {
          "url": "https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data",
          "title": "SEC: accessing EDGAR data"
        },
        {
          "url": "https://www.sec.gov/about/privacy-information",
          "title": "SEC: privacy information, website dissemination"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "stooq",
      "name": "Stooq",
      "vendor": "Stooq",
      "kind": "free-public",
      "broker": null,
      "note": "No page could be read. The historical data page answered HTTP 403 to a plain request and a second fetch returned no content. The block was not worked around. Nothing about this source is recorded.",
      "covers": {
        "value": "Not verified. The historical data page refused the request.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "historyDepth": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "freeTier": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pricing": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "Not verified. No terms page could be read, which says nothing about what the terms allow.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "aiTraining": {
        "value": "Not verified. No terms page could be read, which is neither permission nor prohibition.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "Not verified.",
        "basis": "not-verified",
        "source": null,
        "checked": null
      },
      "partnerProgramme": null,
      "pagesOpened": [],
      "documentsNotOpened": [
        {
          "url": "https://stooq.com/db/h/",
          "what": "Historical data page",
          "why": "Answered HTTP 403."
        },
        {
          "url": null,
          "what": "Terms of use",
          "why": "No terms page was found. An address tried for one answered 404, which is not evidence of anything."
        }
      ],
      "checked": "2026-10-09",
      "verification": "not-verified"
    },
    {
      "id": "tiingo",
      "name": "Tiingo",
      "vendor": "Tiingo",
      "kind": "paid-vendor",
      "broker": null,
      "note": "Some of this vendor's pages are drawn by script and were read through a fetch tool that returns the page text. Wording from those pages is recorded as that tool returned it and may differ from the page by a character or two. No terms of use document was read.",
      "covers": {
        "value": "The documentation lists endpoints for End-of-Day, News, Crypto, Forex, IEX, Fundamentals, Dividends and Splits.",
        "basis": "stated",
        "source": "https://www.tiingo.com/documentation/general/overview",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "The pricing page reads '30+ Years' of historical price data on both individual plans.",
        "basis": "stated",
        "source": "https://www.tiingo.com/about/pricing",
        "checked": "2026-10-09"
      },
      "delivery": {
        "value": "REST endpoints for 'querying data, especially historical data' and a Websocket to 'stream real-time data'.",
        "basis": "stated",
        "source": "https://www.tiingo.com/documentation/general/overview",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'Starter' at '$0/month': 'Unique Symbols per Month: 500', 'Max Requests Per Hour: 50', 'Max Requests Per Day: 1000', 'Max Bandwidth Per Month: 1 GB'.",
        "basis": "stated",
        "source": "https://www.tiingo.com/about/pricing",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "'Power' at '$30/month'. For internal commercial use, '$50/month (or $499/year)'. Redistribution is priced on request.",
        "basis": "stated",
        "source": "https://www.tiingo.com/about/pricing",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "For Basic and Power accounts: 'data is for internal and personal use only. You may not redistribute the data in any form.' For Commercial accounts: 'data is licensed for internal commercial usage. You may not redistribute the data in any form.' The page tells anyone wanting redistribution rights to contact sales.",
        "basis": "stated",
        "source": "https://www.tiingo.com/documentation/general/overview",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened. Silence is neither permission nor prohibition. No terms of use document was read.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "No official library is named on the pages opened. The documentation says 'there are a number of third-party packages that interface with our data'.",
        "basis": "not-found",
        "source": "https://www.tiingo.com/documentation/general/overview",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://www.tiingo.com/about/pricing",
          "title": "Tiingo: pricing"
        },
        {
          "url": "https://www.tiingo.com/documentation/general/overview",
          "title": "Tiingo: API documentation overview"
        }
      ],
      "documentsNotOpened": [
        {
          "url": null,
          "what": "Terms of use",
          "why": "The pricing page's footer points to a terms page that was not opened. An address tried for it answered 404, which is not evidence of anything."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "twelve-data",
      "name": "Twelve Data",
      "vendor": "Twelve Data Pte. Ltd.",
      "kind": "paid-vendor",
      "broker": null,
      "note": "The terms of use were read through a fetch tool that returns the page text, and wording from them is recorded as that tool returned it.",
      "covers": {
        "value": "'Access stocks, forex and other financial assets from anywhere at any time.' '250+ Exchanges are supported, across the world.' '82,000+ Different financial assets and many more to come.'",
        "basis": "stated",
        "source": "https://twelvedata.com/",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "'APIs, WebSocket, SDKs unified for all financial data'.",
        "basis": "stated",
        "source": "https://twelvedata.com/",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "'Basic', priced 'Free': '8 API (800 a day) + 8 trial WS' credits. Its usage note reads 'Data may be used internally for testing, evaluation, or development purposes only. The data cannot be displayed to users, shared externally, or used in production systems.'",
        "basis": "stated",
        "source": "https://twelvedata.com/pricing",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "Under 'Pricing for Individual', monthly: 'Grow for hobby projects $ 79', 'Pro for advanced integrations $ 229', 'Ultra for high-volume personal use $ 999', with lower figures shown for annual billing. A second list on the same page reads 'Grow From $29 /mo', 'Pro From $99 /mo', 'Ultra From $329 /mo', and the two were not reconciled. Business pricing was not read.",
        "basis": "stated",
        "source": "https://twelvedata.com/pricing",
        "checked": "2026-10-09"
      },
      "redistribution": {
        "value": "The individual plans describe 'Internal non-display data access': 'Use the data internally for programmatic processing, analysis, system integration, and internal display. The data may not be redistributed or made available to external parties.' The terms of use, dated January 1, 2026, section 2.3(b), forbid a user to 'Redistribute, resell, sublicense, or transfer any Data or access rights to third parties except as expressly permitted'.",
        "basis": "stated",
        "source": "https://twelvedata.com/pricing",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated in the terms of use as read, which contain no clause on machine learning, AI or model training. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": "https://twelvedata.com/terms",
        "checked": "2026-10-09"
      },
      "pythonLibrary": {
        "value": "The home page's Python sample reads 'pip install twelvedata[websocket]' and 'from twelvedata import TDClient'.",
        "basis": "stated",
        "source": "https://twelvedata.com/",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://twelvedata.com/",
          "title": "Twelve Data: home"
        },
        {
          "url": "https://twelvedata.com/pricing",
          "title": "Twelve Data: pricing"
        },
        {
          "url": "https://twelvedata.com/terms",
          "title": "Twelve Data: terms of use"
        }
      ],
      "documentsNotOpened": [],
      "checked": "2026-10-09",
      "verification": "page-opened"
    },
    {
      "id": "yfinance",
      "name": "Yahoo Finance through yfinance",
      "vendor": "Open source project on GitHub (ranaroussi). The data is Yahoo's.",
      "kind": "community",
      "broker": null,
      "note": "Unofficial. The library's own page says it is not affiliated with, endorsed by or vetted by Yahoo. It reads Yahoo's data, so the terms that govern the data are Yahoo's, not the library's. The library's page was read through a fetch tool that returns the page text. Yahoo's terms of service were not read.",
      "covers": {
        "value": "'yfinance offers a Pythonic way to fetch financial & market data from Yahoo! Finance.' 'yfinance is not affiliated, endorsed, or vetted by Yahoo, Inc. It's an open-source tool that uses Yahoo's publicly available APIs, and is intended for research and educational purposes.'",
        "basis": "stated",
        "source": "https://github.com/ranaroussi/yfinance",
        "checked": "2026-10-09"
      },
      "historyDepth": {
        "value": "Not stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "delivery": {
        "value": "A Python library, installed with 'pip install yfinance'.",
        "basis": "stated",
        "source": "https://github.com/ranaroussi/yfinance",
        "checked": "2026-10-09"
      },
      "freeTier": {
        "value": "The library is open source under the Apache 2.0 licence, as its repository states. That licence covers the code, not Yahoo's data. No request limit is stated.",
        "basis": "stated",
        "source": "https://github.com/ranaroussi/yfinance",
        "checked": "2026-10-09"
      },
      "pricing": {
        "value": "No price is stated on the pages opened.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "redistribution": {
        "value": "The library's page says 'the Yahoo! finance API is intended for personal use only' and sends the reader to Yahoo's terms of use for the rights to the data downloaded. Those terms were not read.",
        "basis": "stated",
        "source": "https://github.com/ranaroussi/yfinance",
        "checked": "2026-10-09"
      },
      "aiTraining": {
        "value": "Not stated on the pages opened. The library's page words the intended use as personal, and Yahoo's terms were not read. Silence is neither permission nor prohibition.",
        "basis": "not-found",
        "source": null,
        "checked": null
      },
      "pythonLibrary": {
        "value": "yfinance is itself the Python library. It is a community project, not a Yahoo product.",
        "basis": "stated",
        "source": "https://github.com/ranaroussi/yfinance",
        "checked": "2026-10-09"
      },
      "partnerProgramme": null,
      "pagesOpened": [
        {
          "url": "https://github.com/ranaroussi/yfinance",
          "title": "yfinance repository on GitHub"
        },
        {
          "url": "https://legal.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/index.html",
          "title": "Yahoo Developer API Terms of Use"
        }
      ],
      "documentsNotOpened": [
        {
          "url": null,
          "what": "Yahoo terms of service",
          "why": "Not opened on this reading. The Yahoo Developer API Terms of Use that were opened did not, in the text returned, address Yahoo Finance data, personal use or model training."
        }
      ],
      "checked": "2026-10-09",
      "verification": "page-opened"
    }
  ]
}