SM
STREAMMARKETS

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_companiesSearch companies by name or ticker
get_companyOne company + its projects, by id or ticker
list_projectsProjects filtered by company, country, commodity, stage
get_projectOne project + resource estimates + economics
query_screenerFiltered, sorted, paginated query over any table
latest_newsLatest news, optionally per company
latest_dealsLatest M&A and financing deals

4. Endpoint reference

EndpointReturnsQuery params
GET /api/v1/companiesMining companies with market datasearch, country, commodity, exchange, stage, ticker, sort, order, page, page_size
GET /api/v1/companies/{id}One company by UUID or ticker-
GET /api/v1/projectsMining projects with location and stagesearch, company_id, country, commodity, stage, sort, order, page, page_size
GET /api/v1/projects/{id}One project by UUID-
GET /api/v1/mineral-estimatesResource and reserve estimatesproject_id, company_id, commodity, estimate_type, category, page, page_size
GET /api/v1/mineral-estimate-category-totalsReported/derived/unavailable M+I, M+I+I and P+P totalsproject_id, commodity
GET /api/v1/economicsEconomic studies (NPV, IRR, capex)project_id, company_id, study_type, page, page_size
GET /api/v1/productionProduction actuals by periodproject_id, company_id, commodity, period_year, page, page_size
GET /api/v1/dealsM&A and financing dealsdeal_type, status, acquirer_company_id, target_company_id, search, page, page_size
GET /api/v1/newsNews and announcementscompany_id, project_id, country, source, search, page, page_size
GET /api/v1/documentsFilings and technical reportscompany_id, project_id, document_type, category, page, page_size
GET /api/v1/catalystsUpcoming typed catalysts with expected datescompany_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 tabletable, 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.

For teams and institutions - discuss your data needs