Next free-source hunt
We check for new free data every weekday.
Datasets / Cyber Threat
api.first.org/

FIRST EPSS Scores API

Freeauth: noneProvider terms#cyber-threat#vulnerabilities#risk#threat-intel#time-series✓ verified Nov 1, 2026

FIRST EPSS Scores API

FIRST's EPSS API returns daily JSON scores estimating the probability of observed exploitation activity for a CVE in the next 30 days, with percentile, score date and optional 30-day history. No key or registration is needed.

Required Attribution:

Requested: "Attribution is requested when EPSS data is used in publications or products."

Coverage

Scores cover publicly disclosed CVEs and update daily; the historical archive begins 2021-04-14. The API is intended for one CVE or a small batch, accepts at most 2,000 characters in the CVE filter, returns up to 10,000 records per page and is limited to 1,000 public requests per minute.

Verdict

This is defensive data for ranking vulnerability remediation by forecast exploitation activity. EPSS is a probability and percentile, not a severity or complete risk score, so combine it with asset exposure and impact. Scores update daily and can shift when signals or the model version change; a time series crossing a model-version boundary is not directly comparable. Use the daily CSV for bulk refreshes because FIRST says the API is for lookup rather than bulk synchronization.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load selected FIRST EPSS scores into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.

Raw skill file (/skills/first-epss.md)Also in our MCP server: call get_ingestion_skill with {"slug": "first-epss"}.

Access

  • No account, registration or key. Use the CVE query parameter for one CVE or a small comma-separated batch.

Request

bash
curl 'https://api.first.org/data/v1/epss?cve=CVE-2021-44228,CVE-2023-44487,CVE-2024-3094'

Format

JSON response metadata and rows containing CVE ID, EPSS probability, percentile and score date.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""Selected FIRST EPSS scores -> pandas -> Parquet. No key."""
import requests
import pandas as pd

URL = "https://api.first.org/data/v1/epss"
CVES = "CVE-2021-44228,CVE-2023-44487,CVE-2024-3094"
r = requests.get(URL, params={"cve": CVES}, timeout=60)
r.raise_for_status()
df = pd.DataFrame(r.json()["data"])
df["epss"] = pd.to_numeric(df["epss"])
df["percentile"] = pd.to_numeric(df["percentile"])
df["date"] = pd.to_datetime(df["date"], utc=True)
df.to_parquet("first_epss.parquet", index=False)
print(len(df), "scores", df["date"].min().date().isoformat(),
      "maximum", f'{df["epss"].max():.6f}')

Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 3 scores 2026-11-01 maximum 0.999990

Limits

  • Public endpoints are limited to 1,000 requests per minute.
  • The CVE filter accepts at most 2,000 characters including commas; the global page limit is 10,000 records.
  • FIRST says the API is for lookup, not bulk synchronization; use the daily CSV for the complete current population.

Quirks

  • EPSS is a probability of observed exploitation activity in the next 30 days, not a severity score.
  • percentile is relative to the currently scored population and can move even when a CVE's probability changes little.
  • Historical score series cross several model versions, which can create discontinuities unrelated to a vulnerability-specific event.

Terms and attribution

  • FIRST publishes EPSS scores free of charge with no registration required.
  • The service-content licence is limited to vulnerability disclosure, cybersecurity incident response or preventative cybersecurity uses; attribution is requested for publications or products.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer