Passer au contenu principal

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​

QuoiPrix
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"
}'
ChampRequisSignification
queryouice que vous recherchez, 5–2 000 caractères
entity_typenonce que contient la liste : company (par défaut), website ou community
criterianonjusqu'à 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_countnoncombien d'entrées accepter, 25 par défaut, 100 au maximum
scope.marketsnonjusqu'à 5 codes pays, ["US"] par défaut
scope.languagesnonjusqu'à 5 langues, ["en"] par défaut
idempotency_keynonjusqu'à 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 :

ChampSignification
entity_idl'entrée dans cette liste ; utilisez-la pour l'enrichissement
entity_type, name, domain, urlde quoi il s'agit : une entreprise, un site web ou une communauté
relevance_score40–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_criteriachaque 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-more avec {"set_id": "oset_…", "additional": 25} lance une nouvelle tâche qui ajoute jusqu'à additional entré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/import avec {"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/exclude avec {"set_id": "oset_…", "kind": "domain", "value": "example.com"} tient une entrée à l'écart des exécutions ultérieures de cette liste. kind vaut domain, entity, url_prefix ou list.

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"
}'
ChampRequisSignification
targetsouijusqu'à 1 000 cibles, chacune {"entity_id": "…"} ou {"url": "https://…"}
fieldsouijusqu'à 10 champs ; cibles × champs ne peut pas dépasser 500 par tâche
idempotency_keynoncomme 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​

CodeQuand
400JSON invalide, un champ hors limites, une condition invalide ou un entity_type non pris en charge ; le corps est limité à 256 KiB
401clé API absente ou invalide
403la clé ne peut pas utiliser ce produit
404tâche ou liste inconnue, ou appartenant à un autre compte
404 EXPORT_NOT_FOUNDexport inconnu, ou export d'un autre compte
409 IDEMPOTENCY_CONFLICTl'idempotency_key a déjà été utilisée avec un corps différent
410l'appel retiré /v1/sets/intelligence
429trop 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.