BYTETOOLS

EPSS (FIRST.org) API

Free EPSS API from FIRST.org with no key: daily exploitation probability and percentile for every published CVE. Prioritise patching by likelihood, not just severity.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

What is the EPSS (FIRST.org) API?

The EPSS API is a free, key-free service from FIRST.org returning Exploit Prediction Scoring System values. For any CVE it gives a probability between 0 and 1 that the vulnerability will be exploited in the wild within the next 30 days, plus its percentile rank against all scored CVEs.

EPSS answers a question CVSS does not: not how bad a vulnerability would be if exploited, but how likely anyone is to exploit it. Those are very different, and conflating them is why so many patching programmes drown. The model is trained on observed exploitation activity and refreshed daily, so a CVE's score moves as proof-of-concept code appears, as scanners start probing for it, and as attention fades again.

Read the two numbers as a pair. The example returns 0.99999 for Log4Shell with a percentile of 1.0 — near-certain exploitation, at the very top of the distribution. The absolute probability tells you the risk; the percentile tells you where it sits relative to everything else, which is what actually drives prioritisation when you have a thousand findings. Most CVEs score below 0.01, so an apparently small probability can still be a high percentile. EPSS is explicitly a prediction, not an observation: it is not a statement that a vulnerability has been exploited, which is what CISA's KEV catalogue records instead. The two are complementary and FIRST recommends using them together.

Quick facts

Base URL
https://api.first.org/data/v1/epss
Authentication
No API key or account. FIRST.org publishes EPSS free for any use including commercial, asking for attribution to the EPSS project.
Rate limit
No published hard limit. Scores change once daily, so caching for a day costs nothing in accuracy and removes almost all traffic.
Pricing
Free, including commercial use, with attribution requested.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the EPSS (FIRST.org) API

Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. Fetch the exploitation probability for Log4Shell

GET https://api.first.org/data/v1/epss?cve=CVE-2021-44228

curl
curl 'https://api.first.org/data/v1/epss?cve=CVE-2021-44228'
JavaScript (fetch)
const res = await fetch("https://api.first.org/data/v1/epss?cve=CVE-2021-44228");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.first.org/data/v1/epss?cve=CVE-2021-44228", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "status": "OK",
  "status-code": 200,
  "version": "1.0",
  "access": "public",
  "total": 1,
  "offset": 0,
  "limit": 100,
  "data": [
    {
      "cve": "CVE-2021-44228",
      "epss": "0.999990000",
      "percentile": "1.000000000",
      "date": "2026-08-20"
    }
  ]
}

Parameters

ParameterTypeRequiredDescription
cvequeryOptionalOne CVE ID, or several comma-separated in a single request. CVE-2021-44228
datequeryOptionalHistorical scores for a specific date, which is how you chart a CVE's trajectory. 2026-01-15
daysqueryOptionalReturn only CVEs whose score changed within the last N days. 7
epss-gtqueryOptionalFilter to CVEs with a probability greater than this value. 0.5
percentile-gtqueryOptionalFilter by percentile rather than absolute probability. 0.95
offset / limitqueryOptionalPaging. Default limit is 100, maximum 10000 per request. 100
scopequeryOptionalSet to `time-series` for a CVE's full score history in one response. time-series

Response fields

status / status-codestring / integer
FIRST's envelope. Always check these rather than only the HTTP status.
totalinteger
Number of matching records, independent of paging.
data[].cvestring
The CVE identifier.
data[].epssstring
Probability of exploitation in the next 30 days, 0 to 1, as a string. Cast before comparing.
data[].percentilestring
Rank against all scored CVEs, 0 to 1. The number to sort on when prioritising.
data[].datestring
The model run date these values come from. Scores are recomputed daily.

What you can build with the EPSS (FIRST.org) API

  • Prioritise a vulnerability backlog by exploitation likelihood rather than CVSS alone
  • Alert when a CVE in your estate crosses an EPSS threshold
  • Chart a vulnerability's exploitation probability over time
  • Combine EPSS with CISA KEV to separate predicted from confirmed exploitation
  • Report patching coverage weighted by real-world risk

Common errors and how to fix them

Empty data array

The CVE has no EPSS score.

Fix: Very new CVEs are unscored until the next daily model run, and rejected or reserved IDs are never scored. Absence is not a score of zero.

Values are strings

`epss` and `percentile` are serialised as strings.

Fix: Cast to float before comparing. String comparison will sort `0.9` above `0.11` correctly by luck and fail elsewhere.

Only 100 results returned

Default paging.

Fix: Set `limit` up to 10000 and page with `offset`, reading `total` to know when to stop.

Score differs from yesterday

The model re-runs daily.

Fix: That is intended behaviour. Store the `date` alongside any score you persist so you can explain a change.

EPSS (FIRST.org) API — frequently asked questions

Is the EPSS API free?

Yes, free with no key or registration, and free for commercial use with attribution to the EPSS project at FIRST.org.

What is the difference between EPSS and CVSS?

CVSS measures how severe a vulnerability would be if exploited. EPSS estimates how likely it is to be exploited in the next 30 days. A high CVSS with a low EPSS is a serious flaw nobody is attacking; a moderate CVSS with a high EPSS may deserve your attention first.

Does a high EPSS score mean a vulnerability has been exploited?

No. EPSS is a prediction, not an observation. For confirmed exploitation in the wild, use CISA's Known Exploited Vulnerabilities catalogue, which records vulnerabilities with evidence of active attack. FIRST recommends using the two together.

How often do EPSS scores change?

Daily. The model re-scores every published CVE each day, so scores move as exploitation activity changes. Cache for a day and record the `date` with any score you store.

Tools that pair with this API

Alternatives to EPSS (FIRST.org) API

If EPSS (FIRST.org) does not fit, these security & auth apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
Pwned PasswordsFree Have I Been Pwned password API with no key. Check if a password appears in known breaches using k-anonymity — the password never leaves your server. Tested.No keyYes19 Aug 2026
Have I Been Pwned BreachesFree Have I Been Pwned breach list API with no key: every catalogued data breach with date, affected accounts and compromised data types. Tested curl example.No keyYes19 Aug 2026
NVD CVEFree NIST National Vulnerability Database API: search CVEs by id, keyword, severity, CVSS score and date with full descriptions and references. Tested example.No keyYes19 Aug 2026
CIRCL CVE SearchFree CIRCL CVE Search API with no key: query vulnerabilities by id, vendor or product, and pull the latest published CVEs. CORS enabled. Tested example.No keyYes19 Aug 2026
FilterListsFree FilterLists API with no key: a catalogued directory of thousands of adblock, DNS and firewall filter lists with syntax, licence, language and maintainer metadata. Tested example included.No keyNo21 Aug 2026
FishFishFree FishFish API with no key: a community-curated list of phishing and scam domains targeting gaming and chat platforms, updated continuously. Plain JSON array of domains.No keyNo21 Aug 2026
All Security & Auth APIs

EPSS (FIRST.org) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.