Skip to content
Back to skills

Stock Screener

ASecurity

Screen stocks by fundamental and technical criteria using EODHD screener — filter by market cap, P/E, dividend yield, sector, signals, and more. Use when the user wants to find stocks matching specific criteria.

  • 38 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 5, 2026
ai-agentspythonbashapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 5, 2026

npx -y skills add EodHistoricalData/eodhd-claude-skills --skill stock-screener --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stock Screener?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stock Screener
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/eodhistoricaldata-stock-screener/badge)](https://www.skillsdirectory.com/skills/eodhistoricaldata-stock-screener)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: stock-screener
description: >-
  Screen stocks by fundamental and technical criteria using EODHD screener —
  filter by market cap, P/E, dividend yield, sector, signals, and more.
  Use when the user wants to find stocks matching specific criteria.
version: 0.4.0
---

# Skill: stock-screener

## Purpose

Find stocks matching user-defined criteria using EODHD's screener endpoint, then enrich top results with detailed fundamentals and price data for comparison.

## Trigger

Activate when the user asks for:
- Stock screening or filtering ("find stocks with P/E under 15")
- "Best dividend stocks" or "cheap growth stocks"
- Sector-specific stock lists
- Signal-based screening (new highs, oversold, etc.)
- Comparative analysis of filtered stocks
- "What should I invest in?" (screen first, then analyze)

## Workflow

1. **Translate criteria to filters** — map user language to EODHD screener JSON filters
2. **Run screener** — `screener` endpoint with filters, sort, signals, limit
3. **Review results** — present initial list with key metrics
4. **Enrich top picks** — `fundamentals` for detailed data on top 5-10 results
5. **Add price context** — `eod` for recent price trends
6. **Compile screener report**

## Filter Format (critical)

`filters` is a **JSON array of `[field, operation, value]` triples** — NOT dot-notation
(`market_capitalization.gte`) and NOT a JSON object. If the shape is wrong, the EODHD API
silently ignores the filter and returns unfiltered, irrelevant results.

Operations: `=`, `!=`, `>`, `>=`, `<`, `<=`, `match`. A JSON object is rejected with HTTP 422.

```json
[["market_capitalization",">=",10000000000],["sector","=","Technology"]]
```

**Sort:** `--sort field.direction` (e.g. `market_capitalization.desc`, `pe.asc`). A bare field name is
rejected with HTTP 422 ("sort.0.direction is required").

**Currency caveat (important):** absolute-money fields — `market_capitalization`, `revenue`, `ebitda` — are
in each listing's **local currency**, not USD. A raw threshold leaks huge non-USD companies (e.g. a
Vietnam-listed firm at "3.88T" ₫ ≈ $150M passes `>= 10B`). Each result row has a `currency_symbol` field
indicating its currency. So:
- Filtering/sorting by an absolute-money field → **scope to one market** with `["exchange","=","us"]` (or the
  intended exchange) so the threshold is currency-consistent.
- Multi-market screens → don't compare raw caps across rows; group/label by `currency_symbol`.
- Ratio/percent fields (`pe`, `pb`, `ps`, `peg`, `roe`, `roa`, `beta`, `dividend_yield`) are
  currency-independent and safe to compare across markets.

## Available Filters

The screener supports these filter fields:
- `market_capitalization` — market cap in the listing's **local currency** (see currency caveat; scope by `exchange` for a consistent threshold)
- `earnings_share` — EPS
- `dividend_yield` — dividend yield as a **fraction** (0.03 = 3%, not 3)
- `sector` — sector name (exact match)
- `industry` — industry name (exact match)
- `exchange` — exchange code (e.g., `us`)
- `pe` — P/E ratio
- `wallstreet_target_price` — analyst target price
- Plus many more fundamental fields (see endpoint reference)

Each result row also returns `currency_symbol` (currency of the absolute-money fields) and `exchange` — surface these when presenting caps.

## Available Signals

- `50d_new_hi` / `50d_new_lo` — 50-day new high/low
- `200d_new_hi` / `200d_new_lo` — 200-day new high/low
- `bookvalue_neg` — negative book value
- `wallstreet_lo` / `wallstreet_hi` — at analyst low/high

## Output Structure

### Stock Screener Results — [Criteria Description]

**Filter Applied**
```json
{filters_used}
```

**Results ([N] matches)**
| # | Ticker | Name | Sector | Mkt Cap (ccy) | P/E | Div Yield | Price |
|---|--------|------|--------|---------------|-----|-----------|-------|

Show the `currency_symbol` alongside Mkt Cap; never render a non-USD cap as USD. If the screen spans multiple currencies, say so in the Summary caveats.

**Top Picks — Detailed Analysis**
For each top 5 result:
- Valuation metrics (P/E, P/S, P/B, EV/EBITDA)
- Growth metrics (Revenue growth, EPS growth)
- Profitability (margins, ROE)
- 30-day price trend
- Analyst target vs current price

**Sector Distribution**
| Sector | Count | Avg P/E | Avg Yield |
|--------|-------|---------|-----------|

**Summary**
- Key themes in results
- Caveats and limitations

> This is not financial advice. Data is for informational purposes only.

## Example Filters

```bash
# High-dividend large caps (dividend_yield is a fraction: 0.03 = 3%; exchange=us keeps caps in USD)
python eodhd_client.py --endpoint screener --filters '[["dividend_yield",">=",0.03],["market_capitalization",">=",10000000000],["exchange","=","us"]]' --sort market_capitalization.desc --limit 20

# Undervalued growth stocks
python eodhd_client.py --endpoint screener --filters '[["market_capitalization",">=",1000000000],["earnings_share",">=",1],["exchange","=","us"]]' --signals 200d_new_lo --limit 20

# Tech sector screening
python eodhd_client.py --endpoint screener --filters '[["sector","=","Technology"],["market_capitalization",">=",5000000000],["exchange","=","us"]]' --sort market_capitalization.desc --limit 30
```

## Endpoints Used

| Endpoint | Purpose | Cost |
|----------|---------|------|
| `screener` | Filter and rank stocks | 1 call |
| `fundamentals` | Detailed data for top picks | 10 calls/ticker |
| `eod` | Price context | 1 call/ticker |

## References

- `../eodhd-api/references/endpoints/stock-screener-data.md`
- `../eodhd-api/references/endpoints/fundamentals-data.md`
- `../eodhd-api/references/endpoints/historical-stock-prices.md`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.