Web lists
Web lists : des listes vérifiées d'entreprises, de sites web et de communautés. Décrivez en termes simples ce dont vous avez besoin (des entreprises, des sites web ou des communautés), ajoutez les conditions que chaque élément doit remplir, et obtenez une liste dont chaque entrée a été vérifiée au regard de chaque condition, avec une citation de la source qui prouve chaque correspondance. Complétez ensuite la liste avec les informations dont vous avez besoin (modèle tarifaire, essai gratuit, intégrations, siège social…) et exportez-la dans un fichier.
Conçu pour les listes de leads, les cartographies de marché, la recherche de partenaires et
les listes de sites ou de communautés : vous payez pour les entrées qui remplissent vos
conditions, pas pour celles que nous avons examinées puis écartées. Dans l'API, une liste est
identifiée par son set_id.
Web lists est activé pour une clé sur demande : écrivez à support@omev.be. Les résultats sont facturés sur le solde habituel de la clé.
Prix
| Quoi | Prix |
|---|---|
| Une entrée acceptée dans une liste | $0.0225 |
| Une valeur d'enrichissement trouvée (un champ pour une entrée) | $0.0045 |
Vous payez au fur et à mesure de la livraison des résultats : pour chaque entrée acceptée dans
la liste et pour chaque valeur d'enrichissement effectivement trouvée. Les candidats rejetés,
les valeurs not_found et les téléchargements répétés ne sont pas facturés. Une entrée est
facturée une seule fois par liste, y compris à travers les prolongements find-more.
estimate, get, results, exclude, export et cancel sont gratuits.
Obtenir d'abord un prix
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 vaut search (avec target_count) ou enrich (avec entity_field_values, le
nombre d'entrées multiplié par le nombre de champs). La réponse indique le montant maximal qui
peut vous être facturé :
{
"quote": {
"operation": "search", "currency": "USD",
"lines": [{"kind": "accepted_entity", "unit_price_usd": "0.0225",
"max_units": "25", "max_total_usd": "0.5625"}],
"max_total_usd": "0.5625",
"note": "accepted entities are charged on the accepted count, not the target"
}
}
Créer une liste
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"
}'
| Champ | Requis | Signification |
|---|---|---|
query | oui | ce que vous recherchez, 5–2 000 caractères |
entity_type | non | ce que contient la liste : company (par défaut), website ou community |
criteria | non | jusqu'à 8 conditions, chaque description jusqu'à 300 caractères ; kind vaut must (par défaut), must_not ou should (souhaitée, non obligatoire) ; id facultatif |
target_count | non | combien d'entrées accepter, 25 par défaut, 100 au maximum |
scope.markets | non | jusqu'à 5 codes pays, ["US"] par défaut |
scope.languages | non | jusqu'à 5 langues, ["en"] par défaut |
idempotency_key | non | jusqu'à 200 caractères, dans le corps ou dans l'en-tête Idempotency-Key ; la répéter renvoie la même tâche |
La réponse est la tâche :
{"schema": "sets_job_ack_v1", "job_id": "osjob_…", "operation": "search",
"status": "queued", "hard_deadline_seconds": 600, "set_id": "oset_…", "target_count": 25}
Conservez les deux identifiants : job_id suit cette exécution, set_id désigne la liste
pour find-more, exclude et export.
Suivre la tâche
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 vaut queued, running ou retry_wait, puis l'une des valeurs completed,
partial, failed, cancelled. completion_reason explique la fin : completed,
saturated (il existe moins d'entrées correspondantes que vous n'en avez demandé),
deadline_reached, budget_exhausted, cancelled, failed. Interrogez le statut toutes
les 5–10 secondes.
Pour arrêter une tâche, envoyez {"job_id": "osjob_…"} à /v1/sets/cancel. Les entrées
acceptées avant l'arrêt restent dans la liste.
Lire la liste
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}'
Les résultats sont lisibles pendant l'exécution de la tâche : vous pouvez donc commencer tôt à
travailler avec les premières entrées. limit va jusqu'à 1 000 lignes par appel (100 par
défaut) ; paginez avec offset.
L'enveloppe contient status, completion_reason, target_count, accepted_count,
rejected_count, unknown_count, coverage, saturation_reason et la liste results.
Chaque entrée d'une recherche :
| Champ | Signification |
|---|---|
entity_id | l'entrée dans cette liste ; utilisez-la pour l'enrichissement |
entity_type, name, domain, url | de quoi il s'agit : une entreprise, un site web ou une communauté |
relevance_score | 40–100 : chaque entrée remplit toutes vos conditions obligatoires ; le score augmente avec les conditions souhaitées (should) remplies, la solidité des citations et le nombre de recherches indépendantes qui l'ont trouvée |
matched_criteria | chaque condition remplie avec criterion, status, source_url, une citation textuelle evidence (jusqu'à 200 caractères) et une courte reason |
Les meilleures entrées viennent en premier, triées par relevance_score.
Trouver davantage, importer, exclure
/v1/sets/find-moreavec{"set_id": "oset_…", "additional": 25}lance une nouvelle tâche qui ajoute jusqu'àadditionalentrées (1–100) à la même liste, en ignorant toutes celles qui y figurent déjà. Une liste contient au maximum 100 entrées acceptées./v1/sets/importavec{"set_id": "oset_…", "items": ["example.com", …]}vérifie vos propres URL ou domaines (jusqu'à 1 000) au regard des conditions de la liste. Les éléments qui les remplissent rejoignent la liste et sont facturés comme entrées acceptées./v1/sets/excludeavec{"set_id": "oset_…", "kind": "domain", "value": "example.com"}tient une entrée à l'écart des exécutions ultérieures de cette liste.kindvautdomain,entity,url_prefixoulist.
Enrichir une liste
Ajoutez des informations aux entrées que vous avez déjà, ou à n'importe quel site web public.
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"
}'
| Champ | Requis | Signification |
|---|---|---|
targets | oui | jusqu'à 1 000 cibles, chacune {"entity_id": "…"} ou {"url": "https://…"} |
fields | oui | jusqu'à 10 champs ; cibles × champs ne peut pas dépasser 500 par tâche |
idempotency_key | non | comme pour la recherche |
Champs prédéfinis : company_description, product_category, pricing_start,
pricing_model, has_free_trial, has_public_api, founding_year,
headquarters_country, supported_integrations, primary_platforms.
Un champ personnalisé s'écrit {"field": "<name>", "instruction": "<up to 500 characters>", "output_type": "string"} ; output_type vaut string, number, boolean,
string_list ou object. Les profils d'acheteurs, les concurrents, les requêtes des
acheteurs, les communautés, les points de douleur et les thèmes d'audience ne sont pas des
champs d'enrichissement : commandez plutôt un
dossier de veille sur une entreprise ou un rapport de domaine.
Dans results, chaque entrée porte fields, et chaque champ a un status (found,
not_found, unavailable, error), une value et une evidence. false est une vraie
réponse trouvée. Seules les valeurs found sont facturées.
Les profils d'entreprise ne font plus partie de Web lists : l'appel
/v1/sets/intelligence renvoie 410, et les résultats des tâches terminées auparavant restent
lisibles via /v1/sets/results.
Exporter une liste dans un fichier
L'export est gratuit et se fait en deux appels. Créez d'abord l'export ; format vaut csv
(par défaut), jsonl ou json :
curl -sS https://llmapi.omev.be/v1/sets/export \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"set_id": "oset_…", "format": "csv"}'
{"export_id": "osexp_…", "format": "csv", "row_count": 25, "status": "ready"}
Téléchargez ensuite le fichier avec l'export_id :
curl -sS https://llmapi.omev.be/v1/sets/export \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"export_id": "osexp_…"}' \
-o list.csv
La réponse est le fichier lui-même, en pièce jointe nommée <set_id>.<format> : CSV
(text/csv), JSON Lines (application/x-ndjson, une entrée par ligne) ou JSON
(application/json, les entrées sous results). Colonnes du CSV : entity_id,
entity_type, name, domain, url, relevance_score, matched_criteria (un tableau
JSON des conditions remplies avec leurs preuves).
Viennent ensuite une colonne par champ d’enrichissement demandé pour la liste, dans le même ordre : la valeur trouvée (yes/no pour les champs oui/non, éléments d’une liste séparés par ; ), vide si la valeur n’a pas été trouvée. En JSON et JSON Lines, les mêmes valeurs figurent sous fields. Les sites enrichis sans recherche sont également inclus.
Erreurs
| Code | Quand |
|---|---|
400 | JSON invalide, un champ hors limites, une condition invalide ou un entity_type non pris en charge ; le corps est limité à 256 KiB |
401 | clé API absente ou invalide |
403 | la clé ne peut pas utiliser ce produit |
404 | tâche ou liste inconnue, ou appartenant à un autre compte |
404 EXPORT_NOT_FOUND | export inconnu, ou export d'un autre compte |
409 IDEMPOTENCY_CONFLICT | l'idempotency_key a déjà été utilisée avec un corps différent |
410 | l'appel retiré /v1/sets/intelligence |
429 | trop de requêtes ou trop de tâches dans la file d'attente ; réessayez après une courte pause |
Consultez Erreurs pour le format commun et les conseils de nouvelle tentative.