sfoln/cve-lookup · Developer tools, AI, Automation On request
CVE details from NVD: CVSS v3.1 and v4.0 scores and vectors, CWE, references, EPSS exploit probability and CISA KEV status with a patch priority. Also scans open-source packages (npm, PyPI, Maven, Go, crates.io, NuGet, RubyGems) via OSV with fixed versions. $2 per 1,000 lookups.
Look up CVE details and open-source package vulnerabilities in one call. For each CVE id you get the NVD record (description, CWE, CVSS v4.0, v3.1 and v2 scores and vectors, references, affected products and CPEs), the EPSS exploit probability, CISA KEV status (date added, due date, ransomware use), CISA's SSVC decision points and a computed patch priority. For each package (npm:lodash@4.17.20, a purl, …) you get every known advisory from OSV for that version, merged across databases, with severity, CVSS, CWE, fixed versions, EPSS and KEV, plus the version to upgrade to. Built for security teams, vulnerability management and SBOM pipelines, and for coding agents checking a dependency before they add it.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
CVE record cve
$0.002
$2 / 1,000
One CVE with NVD details (CVSS, CWE, references), EPSS score, CISA KEV status and patch priority.
Package vulnerability report package
$0.002
$2 / 1,000
One open-source package version checked against OSV: advisories with severity, CVSS, fixed versions, EPSS and KEV, and the version to upgrade to.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~cve-lookup/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Look up CVE-2021-44228 and check npm:lodash@4.17.20 for known vulnerabilities: give CVSS, EPSS, whether it is in CISA KEV, and the version to upgrade to.
Input
Input fields
CVE ids and/or open-source packages. Each produces one dataset record with a normalized status.
Field
Type
Default
Meaning
cveIds
array
—
CVE ids CVE identifiers, one per line (CVE-2021-44228). Each returns NVD details (CVSS, CWE, references), the EPSS score and CISA KEV status. Accounts on the Apify free plan can process up to 10 CVEs and packages per run.
packages
array
—
Packages Open-source packages, one per line, as ecosystem:name@version (npm:lodash@4.17.20, pypi:requests==2.19.0, maven:org.apache.logging.log4j:log4j-core@2.14.1, go:golang.org/x/net@v0.17.0, cargo:serde@1.0.0, nuget:Newtonsoft.Json@12.0.1, gem:rails@6.1.0, composer:symfony/http-kernel@5.4.0) or a purl (pkg:npm/lodash@4.17.20). Without a version, every known advisory of the package is listed.
maxItems
integer
1000
Max items Safety cap on CVEs plus packages processed in this run; the rest are ignored and counted as inputItemsDropped in the OUTPUT record. Range 1–10000.
concurrency
integer
4
Concurrency Items processed in parallel (NVD's own limit of 5 requests per 30 s applies to CVE lookups whatever this value). Range 1–8.
includeRaw
boolean
false
Include raw upstream data Attach the NVD / CVE.org record, EPSS and KEV entries (CVEs) or the OSV advisories (packages).
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The CVE id or package spec as entered (CVE ids upper-cased).
recordType
string
Record type cve | package. e.g. "cve"
cveId
string
CVEe.g. "CVE-2021-44228"
found
boolean
Found
dataSource
string
Data source nvd, or cve.org when NVD has no record yet or could not be reached.
vulnStatus
string | null
Status at source NVD: Analyzed, Awaiting Analysis, Modified, Deferred, Rejected, …; CVE.org: PUBLISHED, REJECTED.
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan | skipped_unmetered e.g. "ok"
charged
boolean
Charged
chargedEvent
string
Charged event
chargedCount
integer
Events charged
source
string
Source nvd-osv
fetchedAt
string
Fetched at
error
object
Error { code, message, provider?, status? } when status is not ok. Codes: invalid_package, not_found, rate_limit, timeout, network, server, client, invalid_response; runtime: budget_exhausted, free_plan_limit, unmetered, aborted, charge_failed, record_too_large, invalid_record, dataset_push_failed.
warnings
array
Warnings
raw
object
Raw Upstream records (only with includeRaw).
Example recordExample record
{
"input": "CVE-2021-44228",
"recordType": "cve",
"cveId": "CVE-2021-44228",
"found": true,
"dataSource": "nvd",
"vulnStatus": "Analyzed",
"published": "2021-12-10T10:15:09.143Z",
"lastModified": "2026-08-11T19:33:44.513Z",
"description": "Apache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. …",
"cwes": [
"CWE-20",
"CWE-400",
"CWE-502",
"CWE-917"
],
"cvssScore": 10,
"cvssSeverity": "CRITICAL",
"cvssVersion": "3.1",
"cvssVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
"cvssV40Score": null,
"cvssV40Severity": null,
"cvssV40Vector": null,
"cvssV31Score": 10,
"cvssV31Severity": "CRITICAL",
"cvssV31Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
"cvssV2Score": 9.3,
"cvssV2Severity": "HIGH",
"cvssV2Vector": "AV:N/AC:M/Au:N/C:C/I:C/A:C",
"epssScore": 0.99999,
"epssPercentile": 1,
"epssDate": "2026-10-14",
"kev": true,
"kevDateAdded": "2021-12-10",
"kevDueDate": "2021-12-24",
"kevRansomwareUse": "Known",
"kevRequiredAction": "For all affected software assets for which updates exist, the only acceptable remediation actions are: 1) Apply updates; OR 2) remove affected assets from agency networks. …",
"kevVulnerabilityName": "Apache Log4j2 Remote Code Execution Vulnerability",
"ssvcExploitation": "active",
"ssvcAutomatable": "yes",
"ssvcTechnicalImpact": "total",
"priority": "critical",
"priorityReason": "listed in CISA Known Exploited Vulnerabilities",
"affected": [
{
"vendor": "Apache Software Foundation",
"product": "Apache Log4j2",
"versions": [
"2.0-beta9 to < log4j-core* (affected)"
]
}
],
"cpes": [
"cpe:2.3:o:siemens:6bk1602-0aa12-0tp0_firmware:*:*:*:*:*:*:*:* <2.7.0"
],
"references": [
{
"url": "http://packetstormsecurity.com/files/165225/Apache-Log4j2-2.14.1-Remote-Code-Execution.html",
"tags": [
"Third Party Advisory",
"VDB Entry"
]
}
],
"nvdUrl": "https://nvd.nist.gov/vuln/detail/CVE-2021-44228",
"status": "ok",
"charged": true,
"chargedEvent": "cve",
"source": "nvd-osv",
"fetchedAt": "2026-10-14T10:00:00.000Z"
}
FAQ
Questions
Where does the data come from?
CVE details from the NVD CVE API 2.0 (falling back to the CVE.org record when NVD has not published or cannot be reached), exploit probability from FIRST EPSS, known exploitation from the CISA KEV catalogue, and package advisories from OSV (GitHub, PyPA, RustSec, Go and other databases), with deps.dev to tell an unknown package from a clean one.
How is the patch priority computed?
critical when the CVE is in CISA KEV or CISA's SSVC says exploitation is active; high when EPSS ≥ 0.1 or CVSS ≥ 9.0; medium when CVSS ≥ 7.0 or EPSS ≥ 0.01; otherwise low. The reason is in priorityReason.