Developers
REST API Documentation
Pull stocks, ETFs and a million graded dividend events, with recovery forecasts, straight into your own scripts, models and dashboards.
rocket_launch Quick Start
Base URL
https://dividendhunting.com/core/api/
Authentication
Every request needs your API key in the Authorization header:
Authorization: Api-Key YOUR_API_KEY
First call in 30 seconds:
curl -H "Authorization: Api-Key YOUR_API_KEY" \
"https://dividendhunting.com/core/api/stocks/?country=US&yield_min=3"
key Who Gets Access
The API is a Hunter feature. Your subscription is checked on every single request, not just when the key is created. If a Hunter subscription lapses, the key stops working immediately, and it starts working again the moment the subscription is renewed.
| Plan | API access | Requests | Daily row budget |
|---|---|---|---|
| Free | No | - | - |
| Basic | No | - | - |
| Hunter | Yes | 30 / minute, 500 / day | 1,000 rows per resource |
| Free trial | Yes (preview) | 6 / minute, 100 / day | 200 rows per resource |
New accounts get full Hunter-level access during the free trial so you can build and test your integration before paying, just with tighter limits. When the trial ends, API access ends with it unless you are on Hunter. Compare plans here.
speed Rate Limits & Fair Use
Two kinds of limits protect the service. They are independent, and both apply.
1. Request throttling
Hunter: 30 requests per minute and 500 per day.
Trial: 6 per minute and 100 per day.
Go over and you get 429 Too Many Requests with a Retry-After
header. Wait, then continue. Nothing bad happens.
2. Daily extraction budget
Each resource (stocks, ETFs, dividends) has a daily row budget: 1,000 rows per day on Hunter, 200 on trial. Every row the API returns counts against it. The counter resets at midnight.
auto_stories Pagination
Every list endpoint returns 10 results per page. That size is fixed:
there is no page_size parameter, and asking for one is silently ignored.
Use ?page=N to move through results.
{
"count": 1432,
"next": "https://dividendhunting.com/core/api/stocks/?country=US&page=3",
"previous": "https://dividendhunting.com/core/api/stocks/?country=US&page=1",
"results": [ ... 10 objects ... ]
}
Tip: filter first, paginate second. The filters below exist so you never need to walk the full dataset, which would burn your daily row budget anyway.
api Endpoints
/stocks/
and /stocks/{id}/
Active, dividend-relevant stocks with prices, dividend profile and our proprietary recovery and prediction metrics (recovery rate, hunting score, prediction confidence, and more).
Filters
| Parameter | Example | Meaning |
|---|---|---|
symbol | symbol=KO | Ticker, case-insensitive |
isin | isin=US1912161007 | ISIN code |
exchange | exchange=NYSE | Exchange code |
country | country=US | ISO2 country code |
region | region=Europe | Geographical region |
currency | currency=EUR | ISO 4217 currency |
sector | sector=Utilities | Sector name (stocks only) |
ex_date / ex_date_after / ex_date_before | ex_date_after=2026-06-15 | Latest known ex-dividend date (YYYY-MM-DD) |
yield_min / yield_max | yield_min=3 | Indicated dividend yield % |
market_cap_min / market_cap_max | market_cap_min=1000000000 | Market cap (stocks only) |
pe_min / pe_max | pe_max=20 | P/E ratio (stocks only) |
volume_min / volume_max | volume_min=100000 | 30-day average volume |
dividend_frequency | dividend_frequency=Quarterly | Payout cadence |
pays_dividends | pays_dividends=true | Dividend payers only |
Example
curl -H "Authorization: Api-Key YOUR_API_KEY" \
"https://dividendhunting.com/core/api/stocks/?exchange=NYSE&yield_min=4&market_cap_min=1000000000"
{
"count": 87,
"next": "https://dividendhunting.com/core/api/stocks/?exchange=NYSE&yield_min=4&market_cap_min=1000000000&page=2",
"previous": null,
"results": [
{
"id": 1042,
"symbol": "T",
"name": "AT&T Inc.",
"isin": "US00206R1023",
"exchange": "NYSE",
"country": "US",
"region": "North America",
"currency": "USD",
"price": "27.1300",
"dividend_yield": "4.0900",
"dividend_yield_ttm": "4.2100",
"display_ex_date": "2026-07-09",
"dividend_frequency": "Quarterly",
"recovery_rate": "78.4000",
"hunting_score": "12.50",
"predicted_hunting_score": "14.20",
"prediction_confidence": 0.83,
"market_cap": 194500000000,
"pe_ratio": "11.20",
"...": "..."
}
]
}
/etfs/
and /etfs/{id}/
Same shape and metrics as stocks, with ETF-specific fields instead of fundamentals: expense ratio, net assets, asset class, focus, strategy, brand and index tracked.
Filters
All the shared stock filters above (symbol, isin,
exchange, country, region, currency,
ex_date*, yield_min/max, volume_min/max,
dividend_frequency, pays_dividends) plus:
| Parameter | Example | Meaning |
|---|---|---|
focus | focus=Dividend | Thematic or regional focus |
asset_class | asset_class=Equity | Asset class |
brand | brand=iShares | Fund brand |
expense_ratio_max | expense_ratio_max=0.5 | Max expense ratio |
net_assets_min | net_assets_min=100000000 | Min assets under management |
Example
curl -H "Authorization: Api-Key YOUR_API_KEY" \
"https://dividendhunting.com/core/api/etfs/?focus=Dividend&expense_ratio_max=0.4"
/dividends/
and /dividends/{uuid}/
Individual dividend events: the timeline (ex-date, record date, payment date), the payout, the AI prediction made before the ex-date, and the graded result once the event completes. Sorted newest ex-date first.
Look up events by isin directly, or by symbol (optionally
narrowed with exchange); the symbol resolves through active stocks
and ETFs to its ISIN.
Filters
| Parameter | Example | Meaning |
|---|---|---|
isin | isin=US00206R1023 | All events for an ISIN |
symbol | symbol=T | Resolve by ticker |
exchange | symbol=T&exchange=NYSE | Disambiguate the ticker by exchange |
ex_date / ex_date_after / ex_date_before | ex_date_after=2026-06-01 | Ex-date range (YYYY-MM-DD) |
probability_min / probability_max | probability_min=0.8 | AI same-day recovery probability (0-1) |
prediction_result | prediction_result=✅ | Graded outcome: ✅ correct, 🟡 partial, 🔵 missed opportunity, ❌ miss |
yield_min / yield_max | yield_min=1 | Event yield % of ex-date price |
recovered | recovered=true | Price recovered to pre-ex level |
completed | completed=false | Event fully graded yes/no |
Example: upcoming high-probability events
curl -H "Authorization: Api-Key YOUR_API_KEY" \
"https://dividendhunting.com/core/api/dividends/?ex_date_after=2026-06-12&probability_min=0.85"
{
"count": 23,
"next": "...",
"previous": null,
"results": [
{
"id": "0b9f9a3e-7c2d-4f6a-9f1e-2d3c4b5a6978",
"isin": "US00206R1023",
"ex_date": "2026-07-09",
"record_date": "2026-07-09",
"payment_date": "2026-08-01",
"amount": "0.277500",
"event_yield": "1.0200",
"probability": 0.91,
"predicted_is_same_day": true,
"prediction_confidence": 0.86,
"predicted_days_to_recover": "0.0",
"predicted_hunting_score": "310.50",
"prediction_result": null,
"total_days_to_recover": null,
"event_status": "IN_PROGRESS",
"...": "..."
}
]
}
/countries/
and /exchanges/
Reference data, handy for building filter dropdowns and for valid
country / exchange values. Both include how many stocks
and ETFs we cover there.
/countries/supports?region=Europe, detail at/countries/US//exchanges/supports?country=US, detail at/exchanges/NYSE/
{
"code": "NYSE",
"name": "New York Stock Exchange",
"country": "US",
"currency": "USD",
"timezone": "America/New_York",
"stock_count": 2417,
"etf_count": 389
}
error_outline Errors
| Status | Meaning | What to do |
|---|---|---|
401 Unauthorized |
Missing, malformed or invalid API key | Check the header format: Authorization: Api-Key ... |
403 Forbidden |
Valid key, but no API access: not on Hunter, trial expired, or access revoked for crossing the extraction budget | Upgrade to Hunter, or contact support if you were revoked |
404 Not Found |
No active object with that id. Inactive (delisted or discarded) records are never served | Check the id, or search via list filters |
429 Too Many Requests |
Request throttle hit | Respect the Retry-After header and slow down |
Error bodies are JSON with a detail field explaining
what happened.
handshake Good to Know
- The API is read-only. GET requests only.
- Only active instruments and dividend events are served. Delisted symbols and discarded events never appear in any response.
- Dates are
YYYY-MM-DD. Decimals come as strings to preserve precision; parse them with your language's decimal type, not float, if you care about cents. - Regenerating your key in the dashboard invalidates the old one instantly. Do it whenever a key may have leaked.
- Don't cache and republish the dataset. The terms of service apply to API usage too.
- Building something cool with this? Tell us about it.
Ready to build?
The API ships with the Hunter plan. Every new account can try it free, full access, no card required.
See Plans