API for agents
The full Stream Markets mining database - companies, projects, resource estimates, economics, production, deals, and news - over a keyed REST API and an MCP endpoint. Plug it straight into Claude or your own agents. Every row carries a source_url back to the original filing where available.
Read-only · JSON · Bearer keys
Signed in? The full reference, recipes, keys, and usage live in the API console.
1. Get a key
Sign in, open the API console, and generate a key. API requests require a paid Pro or Pro+ plan; API access is not included in the trial. The key is shown once - store it like a password. Keys can be revoked at any time from the same page.
2. Try a research task (REST)
Financing deals announced since 2026-06-20, newest first.
curl -G 'https://stream-markets.com/api/v1/screener' \
-H 'Authorization: Bearer YOUR_API_KEY' \
--data-urlencode 'table=deals' \
--data-urlencode 'filters=[{"key":"deal_type","op":"eq","value":"Financing"},{"key":"announcement_date","op":"gte","value":"2026-06-20"}]' \
--data-urlencode 'sort=announcement_date' \
--data-urlencode 'order=desc' \
--data-urlencode 'page=1' \
--data-urlencode 'page_size=100'Replace YOUR_API_KEY with your key. Each example fetches one page; total gives the matching row count. Change page to continue. Dates are fixed in copied code; update them when reusing a query.
3. Connect an agent (MCP)
The MCP endpoint speaks the streamable HTTP transport at https://stream-markets.com/api/mcp, authenticated with the same API keys. For clients that support remote MCP servers with custom headers, configure:
{
"mcpServers": {
"stream-markets": {
"type": "http",
"url": "https://stream-markets.com/api/mcp",
"headers": { "Authorization": "Bearer sk_live_..." }
}
}
}For Claude Desktop (which launches local servers), bridge with mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"stream-markets": {
"command": "npx",
"args": [
"mcp-remote", "https://stream-markets.com/api/mcp",
"--header", "Authorization: Bearer sk_live_..."
]
}
}
}Available tools:
| search_companies | Search companies by name or ticker |
| get_company | One company + its projects, by id or ticker |
| list_projects | Projects filtered by company, country, commodity, stage |
| get_project | One project + resource estimates + economics |
| query_screener | Filtered, sorted, paginated query over any table |
| latest_news | Latest news, optionally per company |
| latest_deals | Latest M&A and financing deals |
4. Endpoint reference
| Endpoint | Returns | Query params |
|---|---|---|
| GET /api/v1/companies | Mining companies with market data | search, country, commodity, exchange, stage, ticker, sort, order, page, page_size |
| GET /api/v1/companies/{id} | One company by UUID or ticker | - |
| GET /api/v1/projects | Mining projects with location and stage | search, company_id, country, commodity, stage, sort, order, page, page_size |
| GET /api/v1/projects/{id} | One project by UUID | - |
| GET /api/v1/mineral-estimates | Resource and reserve estimates | project_id, company_id, commodity, estimate_type, category, page, page_size |
| GET /api/v1/mineral-estimate-category-totals | Reported/derived/unavailable M+I, M+I+I and P+P totals | project_id, commodity |
| GET /api/v1/economics | Economic studies (NPV, IRR, capex) | project_id, company_id, study_type, page, page_size |
| GET /api/v1/production | Production actuals by period | project_id, company_id, commodity, period_year, page, page_size |
| GET /api/v1/deals | M&A and financing deals | deal_type, status, acquirer_company_id, target_company_id, search, page, page_size |
| GET /api/v1/news | News and announcements | company_id, project_id, country, source, search, page, page_size |
| GET /api/v1/documents | Filings and technical reports | company_id, project_id, document_type, category, page, page_size |
| GET /api/v1/catalysts | Upcoming typed catalysts with expected dates | company_id, project_id, catalyst_type, status, page, page_size |
| GET /api/v1/search?q= | Cross-entity search (companies, projects, deals) | q |
| GET /api/v1/screener?table= | Filtered query over any table | table, filters (JSON), search, sort, order, page, page_size |
5. Limits and errors
- The API is included with paid plans, which carry ONE daily row allowance shared between the API and CSV/Excel exports: Pro 25,000 rows/day, Pro+ 150,000 rows/day, resetting at midnight UTC. Free accounts keep CSV export (1,000 rows/day) but no API.
- One call returns one page of up to 200 rows (page_size, default 50), and only the rows returned draw from the allowance. Fetching N matching rows takes ceil(N / 200) calls and draws N rows - a full companies pull is under 3,000 rows - a small slice of a Pro day's 25,000-row allowance.
- Requests are also rate limited per minute as an abuse control - a 429 rate_limited answer includes a Retry-After header.
- Every response carries X-Rows-Limit, X-Rows-Remaining, and X-Rows-Reset (epoch seconds, resets midnight UTC); the X-RateLimit-* headers are legacy aliases of the same numbers.
- 401 - missing or unknown key. 403 - revoked key. 429 rows_exhausted - daily allowance used until the reset. 429 rate_limited - slow down per Retry-After. All errors are JSON with an error message and a stable code.