Company sets
Describe the companies you need in plain words, add the conditions each one must meet, and get back a set: a list of companies, websites or communities that were checked against every condition, with a quote from the source that proves each match. Then fill the set with the facts you need (pricing model, free trial, integrations, headquarters…) or order a full company profile for the ones that matter.
Built for lead lists, market maps and partner research: you pay for companies that pass your conditions, not for the ones we looked at and rejected.
The calls work with your usual OmevAI API key and are charged to the same balance. For volumes or questions, contact support@omev.be.
Price
| What | Price |
|---|---|
| One accepted entity in a set | $0.020 |
| One found enrichment value (one field for one entity) | $0.004 |
| One company profile | $0.080 |
You pay as results are delivered: for each entity accepted into the set, for each
enrichment value that was actually found, and for each profile that was actually built.
Rejected candidates, not_found values, empty profiles and repeated downloads are not
charged. An entity is charged once per set, including across find-more continuations.
estimate, get, results, exclude and cancel are free.
Get a price first
curl -sS https://llmapi.omev.be/v1/sets/estimate \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operation": "search", "target_count": 25}'
operation is search (with target_count), enrich (with entity_field_values,
the number of entities times the number of fields) or intelligence (with
entity_count). The answer shows the maximum you can be charged:
{
"quote": {
"operation": "search", "currency": "USD",
"lines": [{"kind": "accepted_entity", "unit_price_usd": "0.020",
"max_units": "25", "max_total_usd": "0.500"}],
"max_total_usd": "0.500",
"note": "accepted entities are charged on the accepted count, not the target"
}
}
Build a set
curl -sS https://llmapi.omev.be/v1/sets/search \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entity_type": "company",
"query": "Podcast editing software for small businesses",
"criteria": [
{"description": "Offers a self-serve paid plan", "kind": "must"},
{"description": "Has a free trial", "kind": "should"},
{"description": "Is a freelance agency, not a software product", "kind": "must_not"}
],
"target_count": 25,
"scope": {"markets": ["US"], "languages": ["en"]},
"idempotency_key": "acme-17-podcast-tools-2026-09"
}'
| Field | Required | Meaning |
|---|---|---|
query | yes | what you are looking for, 5–2,000 characters |
entity_type | no | company (default), website or community |
criteria | no | up to 8 conditions, each description up to 300 characters; kind is must (default), must_not or should (preferred, not required); optional id |
target_count | no | how many entities to accept, default 25, maximum 100 |
scope.markets | no | up to 5 country codes, default ["US"] |
scope.languages | no | up to 5 languages, default ["en"] |
idempotency_key | no | up to 200 characters, in the body or the Idempotency-Key header; repeating it returns the same job |
The answer is the job:
{"schema": "sets_job_ack_v1", "job_id": "osjob_…", "operation": "search",
"status": "queued", "hard_deadline_seconds": 600, "set_id": "oset_…", "target_count": 25}
Keep both identifiers: job_id follows this run, set_id names the set for
find-more and exclude.
Follow the job
curl -sS https://llmapi.omev.be/v1/sets/get \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "osjob_…"}'
{"job": {"id": "osjob_…", "kind": "search", "status": "running",
"created_at": "…", "deadline_at": "…", "completion_reason": null,
"progress": {"processed": 12, "total_or_target": 25}}}
status is queued, running or retry_wait, then one of completed, partial,
failed, cancelled. completion_reason explains the end: completed,
saturated (fewer matching entities exist than you asked for), deadline_reached,
budget_exhausted, cancelled, failed. Poll every 5–10 seconds.
To stop a job, send {"job_id": "osjob_…"} to /v1/sets/cancel. Entities accepted
before the stop stay in the set.
Download the set
curl -sS https://llmapi.omev.be/v1/sets/results \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "osjob_…", "limit": 100, "offset": 0}'
Results are readable while the job runs, so you can start working with the first
entities early. limit is up to 1,000 rows per call (default 100); page with offset.
The envelope holds status, completion_reason, target_count, accepted_count,
rejected_count, unknown_count, coverage, saturation_reason and the results
list. Each entity of a search:
| Field | Meaning |
|---|---|
entity_id | the entity in this set; use it for enrichment and profiles |
entity_type, name, domain, url | who it is |
relevance_score | 0–100, how many of your conditions it meets (must and must_not count double) |
matched_criteria | each met condition with criterion, status, source_url, a verbatim evidence quote (up to 200 characters) and a short reason |
Find more, import, exclude
/v1/sets/find-morewith{"set_id": "oset_…", "additional": 25}starts a new job that adds up toadditionalentities (1–100) to the same set, skipping every entity already in it. A set holds at most 100 accepted entities./v1/sets/importwith{"set_id": "oset_…", "items": ["example.com", …]}checks your own list (up to 1,000 URLs or domains) against the set's conditions. Items that pass join the set and are charged as accepted entities./v1/sets/excludewith{"set_id": "oset_…", "kind": "domain", "value": "example.com"}keeps an entity out of later runs of this set.kindisdomain,entity,url_prefixorlist.
Enrich a set
Add facts to entities you already have, or to any public website.
curl -sS https://llmapi.omev.be/v1/sets/enrich \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"targets": [{"entity_id": "…"}, {"url": "https://example.com"}],
"fields": [
{"field": "pricing_model"},
{"field": "has_free_trial"},
{"field": "offers_white_label", "instruction": "Does the company sell a white-label version?", "output_type": "boolean"}
],
"idempotency_key": "acme-17-podcast-enrich-1"
}'
| Field | Required | Meaning |
|---|---|---|
targets | yes | up to 1,000 targets, each {"entity_id": "…"} or {"url": "https://…"} |
fields | yes | up to 10 fields; targets × fields may not exceed 500 per job |
idempotency_key | no | as for search |
Ready-made fields: company_description, product_category, pricing_start,
pricing_model, has_free_trial, has_public_api, founding_year,
headquarters_country, supported_integrations, primary_platforms.
A custom field is {"field": "<name>", "instruction": "<up to 500 characters>", "output_type": "string"}; output_type is string, number, boolean,
string_list or object. Buyer profiles, competitors, buyer queries, communities,
pain points and audience themes are not enrichment fields: order a company profile
instead.
In results, each entity carries fields, and each field has status (found,
not_found, unavailable, error), value and evidence. false is a real found
answer. Only found values are charged.
Company profiles
curl -sS https://llmapi.omev.be/v1/sets/intelligence \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"targets": [{"url": "https://example.com"}],
"preset": "company_intelligence_report_v1",
"output_format": "pdf",
"market": "US",
"language": "en",
"idempotency_key": "acme-17-example-profile"
}'
| Field | Required | Meaning |
|---|---|---|
targets | yes | 1–25 targets, {"entity_id": "…"} or {"url": "https://…"} |
preset | no | company_intelligence_report_v1 for the full client-ready report (exactly one target); omit for a compact profile per target |
output_format | no | json (default); with the report preset also pdf, md or csv |
market, language | no | default US and en |
Without a preset, each target gets a compact profile in results[].fields: product,
icp (buyer segments), key_features, key_benefits, pain_points, competitors,
buyer_queries, best_subreddits, coverage and sources.
The report preset returns one document with these sections: product, icp
(buyer segments and quotes), key_features, buyer_search_queries,
best_subreddits, competitors, coverage, limitations, sources. Every claim
points to its source. When you ask results for pdf, md or csv, the answer is the
file itself; you can pass another output_format to results later without paying again.
A profile takes longer than a search: allow up to 30 minutes for the report preset.
Errors
| Code | When |
|---|---|
400 | invalid JSON, a field out of range, an invalid condition or an unsupported entity_type; the body is limited to 256 KiB |
401 | missing or invalid API key |
403 | the key cannot use this product |
404 | unknown job or set, or one that belongs to another account |
409 IDEMPOTENCY_CONFLICT | the idempotency_key was already used with a different body |
429 | too many requests or too many jobs in the queue; retry after a short pause |
See Errors for the common format and retry advice.