Web lists
Web lists: listas verificadas de empresas, sitios web y comunidades. Describe con palabras sencillas lo que necesitas (empresas, sitios web o comunidades), añade las condiciones que debe cumplir cada elemento y recibe una lista en la que cada entrada se ha comprobado frente a cada condición, con una cita de la fuente que demuestra cada coincidencia. Después, completa la lista con los datos que necesites (modelo de precios, prueba gratuita, integraciones, sede…) y expórtala a un archivo.
Pensado para listas de leads, mapas de mercado, búsqueda de socios y listas de sitios o
comunidades: pagas por las entradas que cumplen tus condiciones, no por las que revisamos y
descartamos. En la API, una lista se identifica por su set_id.
Web lists se activa para una clave bajo petición: escribe a support@omev.be. Los resultados se cobran del saldo habitual de la clave.
Precio
| Qué | Precio |
|---|---|
| Una entrada aceptada en una lista | $0.0225 |
| Un valor de enriquecimiento encontrado (un campo para una entrada) | $0.0045 |
Pagas a medida que se entregan los resultados: por cada entrada aceptada en la lista y por
cada valor de enriquecimiento que realmente se encontró. No se cobran los candidatos
rechazados, los valores not_found ni las descargas repetidas. Una entrada se cobra una sola
vez por lista, incluidas las continuaciones find-more. estimate, get, results,
exclude, export y cancel son gratuitos.
Consulta el precio primero
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 es search (con target_count) o enrich (con entity_field_values, el
número de entradas multiplicado por el número de campos). La respuesta muestra el importe
máximo que se te puede cobrar:
{
"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"
}
}
Crear una lista
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"
}'
| Campo | Requerido | Significado |
|---|---|---|
query | sí | lo que buscas, 5–2000 caracteres |
entity_type | no | qué contiene la lista: company (por defecto), website o community |
criteria | no | hasta 8 condiciones, cada description de hasta 300 caracteres; kind es must (por defecto), must_not o should (preferible, no obligatoria); id opcional |
target_count | no | cuántas entradas aceptar, por defecto 25, máximo 100 |
scope.markets | no | hasta 5 códigos de país, por defecto ["US"] |
scope.languages | no | hasta 5 idiomas, por defecto ["en"] |
idempotency_key | no | hasta 200 caracteres, en el cuerpo o en la cabecera Idempotency-Key; repetirla devuelve el mismo trabajo |
La respuesta es el trabajo:
{"schema": "sets_job_ack_v1", "job_id": "osjob_…", "operation": "search",
"status": "queued", "hard_deadline_seconds": 600, "set_id": "oset_…", "target_count": 25}
Guarda ambos identificadores: job_id sigue esta ejecución y set_id identifica la
lista para find-more, exclude y export.
Seguir el trabajo
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 es queued, running o retry_wait y después uno de completed, partial,
failed, cancelled. completion_reason explica el final: completed,
saturated (existen menos entradas que cumplan las condiciones de las que pediste),
deadline_reached, budget_exhausted, cancelled, failed. Consulta el estado cada
5–10 segundos.
Para detener un trabajo, envía {"job_id": "osjob_…"} a /v1/sets/cancel. Las entradas
aceptadas antes de la detención permanecen en la lista.
Leer la lista
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}'
Los resultados se pueden leer mientras el trabajo está en curso, así que puedes empezar a
trabajar pronto con las primeras entradas. limit admite hasta 1000 filas por llamada
(100 por defecto); pagina con offset.
El sobre contiene status, completion_reason, target_count, accepted_count,
rejected_count, unknown_count, coverage, saturation_reason y la lista results.
Cada entrada de una búsqueda:
| Campo | Significado |
|---|---|
entity_id | la entrada dentro de esta lista; úsala para el enriquecimiento |
entity_type, name, domain, url | qué es: una empresa, un sitio web o una comunidad |
relevance_score | 40–100: cada entrada cumple todas tus condiciones obligatorias; la puntuación sube con las condiciones deseables (should) cumplidas, con la solidez de las citas y con el número de búsquedas independientes que la encontraron |
matched_criteria | cada condición cumplida con criterion, status, source_url, una cita literal evidence (hasta 200 caracteres) y un breve reason |
Las mejores entradas van primero, ordenadas por relevance_score.
Buscar más, importar, excluir
/v1/sets/find-morecon{"set_id": "oset_…", "additional": 25}inicia un nuevo trabajo que añade hastaadditionalentradas (1–100) a la misma lista y omite todas las que ya contiene. Una lista admite como máximo 100 entradas aceptadas./v1/sets/importcon{"set_id": "oset_…", "items": ["example.com", …]}comprueba tus propias URL o dominios (hasta 1000) frente a las condiciones de la lista. Los elementos que las cumplen se unen a la lista y se cobran como entradas aceptadas./v1/sets/excludecon{"set_id": "oset_…", "kind": "domain", "value": "example.com"}mantiene una entrada fuera de las siguientes ejecuciones de esta lista.kindesdomain,entity,url_prefixolist.
Enriquecer una lista
Añade datos a entradas que ya tienes o a cualquier sitio web público.
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"
}'
| Campo | Requerido | Significado |
|---|---|---|
targets | sí | hasta 1000 objetivos, cada uno {"entity_id": "…"} o {"url": "https://…"} |
fields | sí | hasta 10 campos; objetivos × campos no puede superar 500 por trabajo |
idempotency_key | no | igual que en la búsqueda |
Campos predefinidos: company_description, product_category, pricing_start,
pricing_model, has_free_trial, has_public_api, founding_year,
headquarters_country, supported_integrations, primary_platforms.
Un campo personalizado es {"field": "<name>", "instruction": "<up to 500 characters>", "output_type": "string"}; output_type es string, number, boolean,
string_list u object. Los perfiles de comprador, los competidores, las consultas de los
compradores, las comunidades, los problemas y los temas de la audiencia no son campos de
enriquecimiento: para ellos, pide un informe de inteligencia de empresa o un
informe de dominio.
En results, cada entrada incluye fields, y cada campo tiene status (found,
not_found, unavailable, error), value y evidence. false es una respuesta
encontrada real. Solo se cobran los valores found.
Los perfiles de empresa ya no forman parte de Web lists: la llamada
/v1/sets/intelligence responde 410, y los resultados de los trabajos terminados antes
siguen disponibles a través de /v1/sets/results.
Exportar una lista a un archivo
La exportación es gratuita y requiere dos llamadas. Primero crea la exportación; format
es csv (por defecto), jsonl o 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"}
Después descarga el archivo con el 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 respuesta es el propio archivo como adjunto con el nombre <set_id>.<format>: CSV
(text/csv), JSON Lines (application/x-ndjson, una entrada por línea) o JSON
(application/json, las entradas bajo results). Columnas del CSV: entity_id,
entity_type, name, domain, url, relevance_score, matched_criteria (un array
JSON con las condiciones cumplidas y su evidencia).
Después va una columna por cada campo de enriquecimiento que pidió para la lista, en el mismo orden: el valor encontrado (yes/no en los campos de sí o no, los elementos de una lista separados por ; ), vacía si el valor no se encontró. En JSON y JSON Lines los mismos valores van en fields. También se incluyen los sitios que enriqueció sin búsqueda.
Errores
| Código | Cuándo |
|---|---|
400 | JSON no válido, un campo fuera de rango, una condición no válida o un entity_type no admitido; el cuerpo está limitado a 256 KiB |
401 | clave de API ausente o no válida |
403 | la clave no puede usar este producto |
404 | trabajo o lista desconocidos, o que pertenecen a otra cuenta |
404 EXPORT_NOT_FOUND | exportación desconocida, o una exportación de otra cuenta |
409 IDEMPOTENCY_CONFLICT | el idempotency_key ya se usó con un cuerpo distinto |
410 | la llamada retirada /v1/sets/intelligence |
429 | demasiadas peticiones o demasiados trabajos en cola; vuelve a intentarlo tras una breve pausa |
Consulta Errores para ver el formato común y los consejos sobre reintentos.