Search Products
Full-text search across product and vendor names in the CPE catalog. Returns
matching product entries with their vendor. This endpoint shares the /v1/cpe
collection path with List Top Vendors and is
selected by supplying the search query parameter.
/v1/cpeCost: 1 credit per successful call
Query parameters
searchstringrequiredSearch term, 3–80 characters. Matched against product names and vendor names (case-insensitive substring match).
limitintegeroptionaldefault: 25Maximum number of results to return. Accepted range: 1–50.
Request
curl "https://api.precursorintelligence.com/functions/v1/cpe?search=forti&limit=10" \
-H "Authorization: Bearer $PRECURSOR_API_KEY"Response
{
"data": {
"count": 3,
"items": [
{
"name": "forticlient",
"vendor": "fortinet",
"is_favorited": false
},
{
"name": "fortigate",
"vendor": "fortinet",
"is_favorited": false
},
{
"name": "fortios",
"vendor": "fortinet",
"is_favorited": false
}
],
"generated_at": "2026-05-29T08:14:22.301Z"
},
"meta": {
"request_id": "8b16efb8-9a6c-4ace-b817-11cbee626d08",
"generated_at": "2026-05-18T10:24:31.118Z",
"credits": { "charged": 1, "remaining": 9998 }
}
}Response fields
data.countintegeroptionalNumber of results returned (equals items.length, not the total catalog
matches). Narrow your search term or reduce limit if results are not
specific enough.
data.itemsarrayoptionalMatching catalog entries. Each object contains the fields below.
data.items[].namestringoptionalLowercased product name as stored in the CPE catalog.
data.items[].vendorstringoptionalLowercased vendor identifier the product belongs to.
data.items[].is_favoritedbooleanoptionalWhether this product is favorited for the calling organisation.
data.generated_atstringoptionalISO 8601 timestamp indicating when this response was generated.
Errors
| Status | error | When |
|---|---|---|
| 400 | missing_search, invalid_search, invalid_limit | A parameter failed validation. |
| 401 | invalid_authorization | Missing or malformed Authorization header. |
| 401 | unauthorized | Invalid/revoked key, or IP not allowlisted. |
| 402 | insufficient_credits | Organisation credit balance is below 1. |
| 404 | not_found | The route or entity does not exist. |
| 405 | method_not_allowed | Only GET and OPTIONS are accepted. |
| 500 | internal | Unexpected server error (credit auto-refunded). |
See Errors for the full error reference.