{
  "checked": "2026-10-17",
  "tools": [
    {
      "id": "finviz",
      "name": "FINVIZ",
      "stocks": true,
      "etfs": null,
      "free": true,
      "mode": "Stock-focused",
      "access": "Free and registered screening use delayed quotes; the official comparison reserves export/API and real-time screening for Elite.",
      "workflow": "Fundamental and technical screening with multiple views and filters.",
      "limits": "An Elite data entitlement is not permission to redistribute data. Confirm exchange coverage, quote timing and saved-screen/export limits in the selected package.",
      "task": "Reproduce a small valuation screen, inspect quote timestamps, and compare the available export controls in the actual tier before planning a recurring workflow.",
      "sources": [
        "finviz"
      ]
    },
    {
      "id": "tradingview",
      "name": "TradingView",
      "stocks": true,
      "etfs": true,
      "free": null,
      "mode": "Stocks and ETFs",
      "access": "Official documentation describes Stock and ETF screeners and CSV export; verify account-tier and exchange-data entitlements separately.",
      "workflow": "Configurable filters and columns, saved screen templates and chart/table research views.",
      "limits": "A chart subscription does not by itself prove every exchange feed is real time. Export documentation describes a workflow, not a universal no-cost entitlement or permission to republish its data.",
      "task": "Run equivalent stock and ETF screens, inspect the units of a yield column and export a small result. Confirm the account plan, quote delay and meaning of missing values.",
      "sources": [
        "tradingview",
        "tv-export"
      ]
    },
    {
      "id": "stock-analysis",
      "name": "Stock Analysis",
      "stocks": true,
      "etfs": true,
      "free": true,
      "mode": "Stocks and ETFs",
      "access": "A free entry tier is documented. Pro lists saved stock screens and one daily download to Excel, CSV or Google Sheets; package limits remain relevant.",
      "workflow": "Separate stock and ETF screeners plus comparison and holdings research tools.",
      "limits": "Free entry is not unlimited access to saved screens, full history, holdings or export. Fund holdings and a fund-level ratio are different research objects.",
      "task": "Compare one stock screen and one ETF screen, inspect valuation/expense-ratio definitions and verify whether the desired columns and export count are in the selected plan.",
      "sources": [
        "stockanalysis",
        "sa-plan"
      ]
    },
    {
      "id": "koyfin",
      "name": "Koyfin",
      "stocks": true,
      "etfs": true,
      "free": true,
      "mode": "Stocks and ETFs",
      "access": "The current provider guide says Free includes stock screening, while ETF data and ETF screening begin on Plus. Plus is listed at 39 USD/month when billed annually.",
      "workflow": "Stock and ETF research within a broader financial-data workspace; screening scope expands by package.",
      "limits": "Do not describe Koyfin Free as a free ETF screener. A monthly equivalent billed annually is not a cancellable monthly price. Historical estimates and financial definitions require explicit period selection.",
      "task": "Check the same screen against Free and Plus entitlements. Verify ETF availability and save the filter/period definitions alongside an exported or recorded result.",
      "sources": [
        "koyfin"
      ]
    },
    {
      "id": "stock-rover",
      "name": "Stock Rover",
      "stocks": true,
      "etfs": true,
      "free": null,
      "mode": "Stocks and ETFs",
      "access": "Current plans advertise a 14-day trial. Premium is 29 USD/month billed 348 USD/year, or 34 USD on monthly billing; advanced screening varies by tier.",
      "workflow": "Fundamental stock and ETF screening; historical and equation-based workflows are reserved for qualifying higher plans.",
      "limits": "Viewing past financial history is not the same as point-in-time historical screening. Do not apply an old plan price to the current subscription or infer that a trial is permanent free access.",
      "task": "Check basic versus historical screening in the selected tier, reproduce a small filter set and record whether the historical observations were available at the decision date.",
      "sources": [
        "stockrover",
        "sr-help"
      ]
    },
    {
      "id": "yahoo-finance",
      "name": "Yahoo Finance",
      "stocks": true,
      "etfs": true,
      "free": null,
      "mode": "Stocks and ETFs",
      "access": "Official help describes stock, mutual-fund and ETF screens. Creating and saving a custom screen requires signing in; exact plan/export entitlements are not asserted here.",
      "workflow": "Predefined and custom screeners using financial and valuation criteria.",
      "limits": "A signed-in saved screen is not an authenticated acceptance test in this review. Check exchange delays and metric definitions; avoid treating a marketing strategy name as an investment recommendation.",
      "task": "Save a small custom screen under a test account, inspect its active asset universe and record the exact filter definition. Confirm whether the desired export is offered in that account.",
      "sources": [
        "yahoo"
      ]
    },
    {
      "id": "zacks",
      "name": "Zacks",
      "stocks": true,
      "etfs": null,
      "free": null,
      "mode": "Stock-focused",
      "access": "The public screener describes custom and predefined stock criteria. Saved-screen, premium research and export conditions need a current account/package check.",
      "workflow": "Fundamental and technical stock filters with predefined screening ideas.",
      "limits": "A proprietary rating or analyst estimate has its own definition and update cycle. A matching screen is not proof of a profitable historical strategy; avoid copying promoted returns into a forecast.",
      "task": "Document the current financial period and rating timestamp for a small screen. Test whether the same filters remain reproducible after clearing a predefined strategy.",
      "sources": [
        "zacks"
      ]
    },
    {
      "id": "etf-database",
      "name": "ETF Database",
      "stocks": false,
      "etfs": true,
      "free": null,
      "mode": "ETF-focused",
      "access": "Public ETF tools are documented; the provider states enhanced screening and table downloads can require Pro, with a 14-day trial advertised.",
      "workflow": "ETF screening by fund attributes such as asset class, issuer and expense ratio, with separate comparison resources.",
      "limits": "An expense ratio is a fund cost measure, not the fund's realized return or bid-ask spread. Check enhanced-screening/download entitlements and whether a yield is trailing or another measure.",
      "task": "Screen for a clearly defined fund category, compare fees and distributions, then inspect the actual holdings and trading costs outside the screen before drawing a conclusion.",
      "sources": [
        "etfdb"
      ]
    }
  ],
  "sources": {
    "finviz": {
      "title": "FINVIZ Elite feature comparison",
      "url": "https://elite.finviz.com/elite",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\finviz.html",
      "direct_error": null
    },
    "tradingview": {
      "title": "TradingView screeners walkthrough",
      "url": "https://www.tradingview.com/support/solutions/43000718885-tradingview-screeners-walkthrough/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\tradingview.html",
      "direct_error": null
    },
    "tv-export": {
      "title": "TradingView screener export instructions",
      "url": "https://www.tradingview.com/support/solutions/43000474432-how-to-export-screener-data/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\tv-export.html",
      "direct_error": null
    },
    "stockanalysis": {
      "title": "Stock Analysis tools",
      "url": "https://stockanalysis.com/tools/",
      "checked": "2026-10-17",
      "snapshot": null,
      "direct_error": "HTTPError: HTTP Error 403: Forbidden",
      "web_note": "source-snapshots\\stockanalysis-web-note.txt"
    },
    "sa-plan": {
      "title": "Stock Analysis Pro and Free plans",
      "url": "https://stockanalysis.com/pro/",
      "checked": "2026-10-17",
      "snapshot": null,
      "direct_error": "HTTPError: HTTP Error 403: Forbidden",
      "web_note": "source-snapshots\\sa-plan-web-note.txt"
    },
    "koyfin": {
      "title": "Koyfin current plan guide and ETF entitlement",
      "url": "https://www.koyfin.com/pricing-llm-info/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\koyfin.html",
      "direct_error": null
    },
    "stockrover": {
      "title": "Stock Rover current plans",
      "url": "https://ww1.stockrover.com/plans/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\stockrover.html",
      "direct_error": null
    },
    "sr-help": {
      "title": "Stock Rover screener overview",
      "url": "https://www.stockrover.com/help/screeners-help/screener-overview/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\sr-help.html",
      "direct_error": null
    },
    "yahoo": {
      "title": "Yahoo create and save screeners",
      "url": "https://help.yahoo.com/kb/finance-for-web/create-save-screeners-sln28083.html",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\yahoo.html",
      "direct_error": null
    },
    "zacks": {
      "title": "Zacks stock screener",
      "url": "https://www.zacks.com/screener/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\zacks.html",
      "direct_error": null
    },
    "etfdb": {
      "title": "ETF Database tools and enhanced-screening boundaries",
      "url": "https://etfdb.com/tools/",
      "checked": "2026-10-17",
      "snapshot": "source-snapshots\\etfdb.html",
      "direct_error": null
    }
  }
}