Request demo

Vulnerability Search API

Filter Every CVE by Exploitation Signal and Severity Together.

POST one filter body. Combine CVSS, EPSS, CISA KEV, weakness and affected-product conditions, sort on what drives your queue, and page through the matches or export them.

QueryPOST /discovery/vulnerability-searchall applied

  1. must enrichment.cisa_kev.date_added exists true
  2. must enrichment.epss_score.epss gte 0.7
  3. sort enrichment.epss_score.epss desc

above 0.7, not in KEV: dropped

CVE-2021-44228
Each condition narrows the points.

Results

  1. CVE-2021-44228Log4j2 · epss 0.99999 · percentile 1 · KEV 2021-12-10

Find CVEs Exploited Before and Likely Exploited Again.

This request asks for CVEs in CISA KEV with an EPSS score of 0.7 or higher, highest EPSS first.

POST https://api.deepinfo.com/v1/discovery/vulnerability-search Reference
ParameterInTypeDescription
filtersbodyobjectOptionalmust, should and must_not clauses, each a list of {name, type, value} conditions.
sortbodyarrayOptionalA list of {field, order} pairs.
pagequeryintegerOptionalPage number, from 1.
page_sizequeryintegerOptionalResults per page. See pagination.
exportquerybooleanOptionalDefault false. Set true to take the result set as an export.
export_formatquerystringOptionaljson or csv.
export_scopequerystringOptionalbasic, default or extended.

Request

curl -X POST "https://api.deepinfo.com/v1/discovery/vulnerability-search?page_size=25" \
  -H "apikey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "must": [
        { "name": "enrichment.cisa_kev.date_added", "type": "exists", "value": true },
        { "name": "enrichment.epss_score.epss", "type": "gte", "value": 0.7 }
      ]
    },
    "sort": [ { "field": "enrichment.epss_score.epss", "order": "desc" } ]
  }'

Response

200 OK · application/json
{
  "page": 1,
  "page_size": 25,
  "result_count": "…",
  "results": [
    {
      "id": "CVE-2021-44228",
      "published": "2021-12-10T10:15:09Z",
      "last_modified": "2026-08-11T19:33:44Z",
      "status": "Analyzed",
      "cisa_exploit_add": "2021-12-10",
      "cisa_action_due": "2021-12-24",
      "metrics": { "cvss_metric_v31": ["…"], "…": "…" },
      "weaknesses": ["…"],
      "enrichment": {
        "epss_score": { "epss": 0.99999, "percentile": 1.0, "date": "2026-09-21" },
        "cisa_kev": { "product": "Log4j2", "date_added": "2021-12-10", "…": "…" },
        "cwe": ["…"],
        "cpe": ["…"],
        "vdeep_metric": { "…": "…" }
      },
      "…": "descriptions, references, configurations"
    },
    "…"
  ]
}

Searchable Fields Grouped by Family.

A sample from each family. All fields listed can be filtered on, and the right-hand column names the fields that can also order the results.

FamilyExample fieldsSortable
Recordid, published, last_modified, status, references.urlid, published, last_modified
CVSS v2 to v4.0metrics.cvss_metric_v31.cvss_data.base_score, …attack_vector, …vector_stringFilter only
EPSSenrichment.epss_score.epss, .percentile, .dateenrichment.epss_score.epss
CISA KEVenrichment.cisa_kev.date_added, .due_date, .known_ransomware_campaign_useenrichment.cisa_kev.date_added
Weaknessenrichment.cwe.id, .owasptop10_2021, .capec_idFilter only
Affected productsenrichment.cpe.vendor, .product, .affected_versionsenrichment.cpe.vendor, enrichment.cpe.product
vDeepenrichment.vdeep_metric.cvss_data.base_score, .base_severityBoth fields

vDeep is Deepinfo’s own CVSS scoring layer. The full field list is in the filtering reference.

Filter Bodies Worth Keeping.

Each body drops into the request above as it stands.

{
  "filters": {
    "must": [
      { "name": "enrichment.epss_score.epss", "type": "gte", "value": 0.5 }
    ],
    "must_not": [
      { "name": "enrichment.cisa_kev.date_added", "type": "exists", "value": true }
    ]
  },
  "sort": [ { "field": "enrichment.epss_score.epss", "order": "desc" } ]
}

The Query Rules in One Place.

Operatorseq, in, startswith, endswith, wildcard, fuzzy, contains_any, contains_all, gte, lte, gt, lt, exists. See search and filters.
Empty bodyAn empty body {} matches all CVEs in the database. Start with a filter.
Result capA query returns at most 10,000 results. Narrow it with filters rather than paging further.
Unknown fieldsA filter on a field that does not exist returns a 400. See errors.
Rate limitsPlan-dependent. The default is one request per second per key and endpoint. See rate limits.

Questions About Vulnerability Search API

How do CVSS, EPSS and CISA KEV differ?

CVSS rates how severe a vulnerability is if it is exploited. EPSS estimates the probability that it will be exploited in the next 30 days. CISA’s Known Exploited Vulnerabilities catalog lists vulnerabilities with evidence of exploitation in the wild.

Each answers a different question, which is why the search lets you combine all three in one filter.

Can I search for a list of specific CVEs?

Yes. Use the in operator on id with an array of CVE identifiers. For a single CVE, the Vulnerability Detail API returns that record directly.

How is the Vulnerability Search API priced?

As part of an API services plan, priced by volume and frequency, separately from the platform. See Data & API pricing.

Can we filter with greater-than and less-than?

Yes, here. Among the searches that take a filter body, Vulnerability Search alone accepts gt and lt, on its date and number fields and on id. On id, use them in place of gte and lte, which return a 400 there.

How do we know when an EPSS score was computed?

enrichment.epss_score.date holds the date of the score, and it can be filtered like the other fields. The daily series for one CVE comes from EPSS History.

Can analysts run these searches without writing code?

Yes. Vulnerability Search in Deep Search & Insights filters the CVE database in the Deepinfo Platform, on severity, weakness, product, EPSS and KEV.

Start With the Products You Run.

Most teams begin with EPSS and KEV filters over their own vendors and products. We set up access and walk through the field set on a short call.