Safeguard
Developer Tools•

Should I use the EPSS API or the daily CSV file?

Use the API for lookups of one CVE or a small batch, and the daily CSV for bulk loads. FIRST says the API is not for syncing a full local copy. Setup steps.

Safeguard Security Team
4 min read

Use the EPSS API when you need the current score for one CVE or a small batch, such as enriching a ticket. Use the daily CSV when you want scores for everything, such as loading a database or joining an asset inventory. FIRST says the API should not be used to keep a full local copy.

The two access paths side by side

QuestionAPIDaily CSV
Best forLookup of one CVE or a fewBulk loads and joins
Typical useEnrich an incoming ticket or scriptFill a database or dashboard
HistoryDate parameter and 30-day time seriesArchive of daily files on GitHub
RegistrationNoneNone
CostFreeFree

Both are free and need no registration, according to FIRST. Attribution is requested when you publish EPSS data in a product or paper.

What the CSV contains

The file has three fields for every scored CVE: the CVE ID, the EPSS probability between 0 and 1, and the percentile, which FIRST defines as the proportion of all scored vulnerabilities with the same score or lower. From v2 onward the first line is a comment that names the model version and the publish date, so skip it when parsing.

The current file sits at one stable address, and the page notes that the address redirects. That is why the sample command uses the follow-redirects flag.

curl -sL https://epss.empiricalsecurity.com/epss_scores-current.csv.gz | gunzip -c | head -3

When the file lands

FIRST's FAQ says scores are published daily, typically within a minute or two after 13:30 UTC. If your job runs at midnight, you are reading the previous day's file. Schedule your pull for the afternoon UTC, then add a check: compare the date in the header line with today's date, and alert if they differ for more than a day.

A simple pipeline

  1. Pull the CSV once a day after the publish time.
  2. Read the header comment and store the model version.
  3. Load the rows into a table keyed by CVE.
  4. Join the table to your list of CVEs found in your own estate, so you score only what you have.
  5. Use the API for exceptions: a ticket arrives with a CVE that is not yet in your table, or a person wants a 30-day trend.

Avoid the tempting shortcut of calling the API once per CVE for the whole estate. FIRST describes the API as designed for lookup, not bulk access. A daily file is lighter on the service and gives you a stable snapshot, so every report that day uses the same numbers.

Keep snapshots

Because scores change daily, keep each day's slice for your inventory, or at least the days you made decisions. You can always fetch history from the archive, but a local copy saves a lookup and records exactly what your dashboard showed. If the model version changes, your stored header line tells you why a day looks different. See why a score history jumps when the model changes.

Where Safeguard fits

EPSS tells you about the world, not your estate. Safeguard's SBOM and dependency scanning list which packages you actually run, and reachability analysis helps show whether the vulnerable code is used. You can try a free scan at gold.safeguard.sh/scan.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at the inventory view. That list of packages is the left side of the join you would run against the EPSS file.

Quick check

Is the EPSS API free?

Yes. FIRST says scores are published free by CSV and API, with no registration required, and asks for attribution when the data is used in publications or products.

What time does EPSS publish new scores?

FIRST's FAQ says daily, typically within a minute or two after 13:30 UTC.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.