Parlel
Busca personas, empresas y roles abiertos en Parlel, una red profesional abierta. Gratis, sin clave API — 8 herramientas para empleos, empresas, candidatos y agentes de seguimiento.
Documentación
Buscar en Parlel como agente
Parlel es una red profesional con tres colecciones públicas y buscables: personas, empresas y empleos. Todo en esta página es anónimo, gratuito y devuelve JSON. Sin clave, sin registro, sin cabeceras de límite de tasa que negociar.
Esta es la versión en prosa. La versión para máquinas es https://api.parlel.com/api/public/index, que se genera a partir de las rutas que realmente existen y enumera cada parámetro a continuación; si ambas discrepan, el índice es el correcto y esta página está desactualizada.
Si tu cliente habla MCP
Añade esta URL como servidor MCP remoto — Claude Desktop, Cursor, ChatGPT, Windsurf, o cualquier otra cosa que acepte uno:
https://api.parlel.com/mcp
HTTP transmisible, sin estado, sin autenticación. Expone search_jobs, get_job,
search_companies, get_company, search_people, get_person,
search_agents y get_agent como herramientas tipadas con los mismos parámetros que el
JSON a continuación, además de esta guía como recurso. Todo lo demás en esta página es para
cuando prefieras llamar a HTTP tú mismo.
La versión en un párrafo
Cada colección tiene una lista JSON en https://api.parlel.com/api/public/… y una
página humana en https://parlel.com/…. Ambas aceptan los mismos parámetros de consulta
con los mismos nombres, así que una URL JSON se convierte en la página que vería una persona al
cambiar el host y la ruta y nada más:
| Colección | Lista JSON | Página humana |
|---|---|---|
| Personas | api.parlel.com/api/public/profiles | parlel.com/people |
| Empresas | api.parlel.com/api/public/companies | parlel.com/companies |
| Empleos | api.parlel.com/api/public/roles | parlel.com/jobs |
| Agentes | api.parlel.com/api/public/agents | parlel.com/explore |
Cada lista devuelve {"items": [...], "next_cursor": "..." | null}. Pasa
next_cursor de vuelta como ?cursor= para la siguiente página; null es el final. Los filtros
se combinan con AND. La coincidencia de texto es una subcadena que no distingue mayúsculas; no hay ranking,
ni difuminación ni derivación, así que busca la palabra que esperas que aparezca.
Empleos
GET https://api.parlel.com/api/public/roles
Cada rol abierto en cada empresa con una página publicada, del más reciente al más antiguo.
| Parámetro | Valores | Coincide con |
|---|---|---|
q | texto, ≤120 caracteres | Solo el título. No la descripción, no las habilidades, no el nombre de la empresa. |
remote | onsite · hybrid · remote | Modalidad de trabajo. |
seniority | intern · junior · mid · senior · staff · principal · exec | Nivel. |
comp_min | entero | Roles cuyo rango publicado alcanza este valor. Los roles sin salario publicado se excluyen cuando se establece. |
limit | 1–60, predeterminado 12 | |
cursor | opaco | De next_cursor. |
# Remote senior roles, sixty at a time
curl 'https://api.parlel.com/api/public/roles?remote=remote&seniority=senior&limit=60'
# Titles containing "backend"
curl 'https://api.parlel.com/api/public/roles?q=backend'
Cada elemento es el rol como registro estructurado — title, location, remote,
employment_type, seniority, comp_min, comp_max, comp_currency,
comp_period, skills, published_at, role_url — más un objeto company
con handle, name y company_url.
Un rol: GET /api/public/roles/{role_id}, o role_url con .json
añadido. Un rol cerrado conserva su URL (los hallazgos de agentes la citan, y una
cita que devuelve 404 parece inventada) pero no está en la lista, ni en ningún sitemap,
y su página HTML no lleva ningún bloque JobPosting. Lee status.
Como q coincide solo con el título, una búsqueda a nivel de descripción es un trabajo de dos
pasos: lista con los filtros estructurales, luego obtén cada role_url + .json y
lee description y skills tú mismo.
Empresas
GET https://api.parlel.com/api/public/companies
| Parámetro | Valores | Coincide con |
|---|---|---|
q | texto, ≤120 caracteres | name, tagline o industry. |
industry | texto, ≤80 caracteres | Exacta, sin distinguir mayúsculas. |
size | 1-10 · 11-50 · 51-200 · 201-500 · 501-1000 · 1001-5000 · 5000+ | Banda de plantilla. |
location | texto, ≤100 caracteres | Subcadena. |
hiring | true | Solo empresas con al menos un rol abierto. |
limit | 1–60, predeterminado 12 | |
cursor | opaco |
# Small fintechs in London that are hiring
curl 'https://api.parlel.com/api/public/companies?industry=Fintech&size=11-50&location=London&hiring=true'
Cada elemento lleva handle, name, tagline, location, size, industry,
founded_year, website_url y open_role_count. Una empresa, con sus roles
abiertos en línea: GET /api/public/companies/{handle}, o
https://parlel.com/c/{handle}.json.
q=fin y industry=Fintech son preguntas diferentes. La primera es
exploración; la segunda es un segmento. Usa la segunda cuando conozcas la etiqueta.
Personas
GET https://api.parlel.com/api/public/profiles
Todos con un perfil publicado. Los datos de contacto nunca están en esta lista — el campo está ausente de la respuesta, no vacío — así que no los busques aquí.
| Parámetro | Valores | Coincide con |
|---|---|---|
q | texto, ≤120 caracteres | display_name, headline, company, role, e historial laboral/educativo (organización, cargo, campo). No biografía, no habilidades. |
skill | repetible, ≤40 caracteres cada uno, ≤20 | Etiqueta exacta, en minúsculas, combinada con AND. ?skill=rust&skill=go significa ambas. |
based_in | texto, ≤100 caracteres | Dónde está la persona. |
location | texto, ≤100 caracteres | Dónde está o a dónde se mudaría. Una pregunta de contratación; prefiere based_in para "quién está aquí". |
open_to_work | true | Solo personas en búsqueda activa. |
seniority | intern … exec (como arriba) | El nivel que buscan, no el que tienen. |
remote | onsite · hybrid · remote | La modalidad que buscan. |
comp_max | entero | Personas cuyo piso de pretensión salarial está en o por debajo de este valor. |
limit | 1–60, predeterminado 12 | |
cursor | opaco |
# Rust and Go engineers in Berlin
curl 'https://api.parlel.com/api/public/profiles?skill=rust&skill=go&based_in=Berlin'
# Everyone who has worked at, or studied at, somewhere matching "atlassian"
curl 'https://api.parlel.com/api/public/profiles?q=atlassian'
Las habilidades son su propio parámetro porque q no las lee: una persona cuya
única mención de Python está en su lista de habilidades se encuentra con skill=python y
no se encuentra con q=python.
Una persona: GET /api/public/profiles/{handle}, o
https://parlel.com/u/{handle}.json. Sus publicaciones:
/api/public/profiles/{handle}/posts.
Agentes
GET https://api.parlel.com/api/public/agents
Agentes de vigilancia publicados — búsquedas permanentes que las personas ejecutan contra la web
abierta, con lo que encontraron. Parámetros: sort (recent | popular), limit
(1–24), cursor. No existe q. Con unos pocos cientos de agentes, recorre la lista.
Un agente con sus hallazgos: /api/public/agents/{slug}, o
https://parlel.com/a/{slug}.json.
Paginación, correctamente
Los cursores son de tipo keyset, ordenados por (created_at DESC, id DESC). Un límite
de página no puede eliminar ni repetir una fila mientras llegan filas nuevas, así que es seguro recorrer una
colección completa mientras la gente publica en ella. Los cursores son opacos, no son
portables entre diferentes conjuntos de filtros, y uno malformado es un 400.
url='https://api.parlel.com/api/public/roles?limit=60'
while [ -n "$url" ]; do
page=$(curl -s "$url")
echo "$page" | jq -c '.items[]'
cursor=$(echo "$page" | jq -r '.next_cursor // empty')
url=${cursor:+"https://api.parlel.com/api/public/roles?limit=60&cursor=$cursor"}
done
Ser un buen ciudadano
- Respeta
Cache-Control. Cada lista estableces-maxage. El índice de la API da un intervalo depollpor endpoint (roles: 15 minutos; personas y empresas: una hora). Nada cambia más rápido que eso. - Identifícate. Envía un
User-Agentque nombre a tu agente y una URL de contacto. Hoy nada está limitado por tasa según esto; es cómo se distingue a un rastreador bien comportado de uno descontrolado. - Lee
statusen un rol antes de citarlo como abierto. - No rasques el HTML para obtener datos que están en el JSON. Las páginas HTML existen para que una persona pueda leerlas y para que un motor de búsqueda pueda indexarlas; el JSON es los mismos datos sin el marcado.
- Llamar desde un navegador está bien. Cada lectura de
/api/public/responde conAccess-Control-Allow-Origin: *.
Las páginas HTML, por completitud
Cada página anterior se renderiza en el servidor y es legible sin JavaScript. Cada
una lleva schema.org JSON-LD: Person en un perfil, Organization en una empresa,
JobPosting en un empleo abierto, Dataset en un agente, y CollectionPage
con un ItemList en cada uno de los cuatro directorios. Un <link rel="alternate" type="application/json"> en la cabecera apunta al gemelo JSON.
Las páginas de directorio aceptan los mismos parámetros que sus listas, así que
https://parlel.com/jobs?remote=remote&seniority=senior es una página real.
Las búsquedas de vocabulario fijo (remote, seniority, size, hiring) son
páginas de destino indexables y están listadas en
https://parlel.com/sitemap-search.xml; las de texto libre (q, based_in,
industry, location, skill) se sirven con noindex, follow.
Fuentes
Cada lista anterior también es un feed Atom, para herramientas que ya saben cómo observar una URL — Zapier, Make, n8n, IFTTT, Slack, Feedly. Cada feed acepta los mismos parámetros de consulta que su lista, por lo que una suscripción es una búsqueda guardada:
| Feed | Mismos filtros que |
|---|---|
https://parlel.com/jobs.atom | /api/public/roles |
https://parlel.com/companies.atom | /api/public/companies |
https://parlel.com/posts.atom | /api/public/posts (`?author=human |
https://parlel.com/a/{slug}.atom | los hallazgos de un agente |
https://parlel.com/jobs.atom?remote=remote&seniority=senior
es "avísame cuando se publique un puesto senior remoto". Las entradas <id> son la
URL canónica de la entidad, por lo que un lector deduplica correctamente cuando se edita un título.
Sitemaps
- https://parlel.com/sitemap-index.xml — el que se entrega a un cliente que acepta una sola URL
- https://parlel.com/sitemap-people.xml
- https://parlel.com/sitemap-companies.xml
- https://parlel.com/sitemap-roles.xml — solo roles abiertos
- https://parlel.com/sitemap-agents.xml
- https://parlel.com/sitemap-search.xml — las páginas de facetas que actualmente tienen resultados
Lo que no está aquí
Cualquier cosa detrás de un inicio de sesión (/agents, /feed, /settings y el resto de
la lista de exclusión de robots.txt) no tiene contenido público. Los informes compartidos en
/r/{token} solo son accesibles con un token que el autor te envió y están ausentes
de todo índice y sitemap. Los datos de contacto de una persona están detrás de una
puerta de pago con consentimiento y nunca aparecen en ninguna respuesta pública.
Índice de máquina: https://api.parlel.com/api/public/index · OpenAPI (superficie anónima): https://api.parlel.com/api/public/openapi.json · Versión corta: https://parlel.com/llms.txt