Para desenvolvedores

API de vagas e servidor MCP da Joonow

As vagas abertas de sites de carreira e sistemas de recrutamento do Brasil, as empresas que estão contratando e o Índice Joonow de Vagas, em JSON ou direto no seu assistente de IA. Grátis e só de leitura.

  • API REST em JSON

    Busca com os mesmos filtros do site, vaga, empresa e Índice, com OpenAPI.

  • Servidor MCP

    Claude, ChatGPT, Copilot e Cursor consultam vagas na conversa.

  • Grátis, com limites

    Funciona sem chave. Com chave grátis, os limites sobem.

Nesta página
  1. Comece em um minuto
  2. Endpoints
  3. Filtros da busca
  4. Paginação
  5. Erros
  6. Chaves e limites
  7. Servidor MCP para assistentes de IA
  8. Como citar a Joonow

Comece em um minuto

A busca funciona sem chave e sem cadastro. Copie e rode no terminal:

curl "https://www.joonow.com/api/v1/jobs?q=analista%20de%20dados&l=Campinas&work=Remote&limit=5"

A resposta traz as vagas, o total, o cursor da próxima página e como citar a Joonow:

{
  "data": [
    {
      "id": "k3j9x2m4pq",
      "title": "Analista de dados",
      "url": "https://www.joonow.com/pt-br/vaga/analista-de-dados-k3j9x2m4pq",
      "applyUrl": "https://www.joonow.com/go/k3j9x2m4pq",
      "company": { "id": "0f5rb3kg49", "name": "Acme", "url": "https://www.joonow.com/pt-br/empresas/acme-0f5rb3kg49", "logo": null },
      "location": { "city": "Campinas", "region": "SP", "country": "BR" },
      "workModel": "Remote",
      "employmentType": "FullTime",
      "seniority": "Professional",
      "salary": { "min": 6000, "max": 8000, "currency": "BRL", "period": "Month" },
      "language": "pt",
      "postedAt": "2026-10-28T12:00:00Z",
      "native": false
    }
  ],
  "total": 214,
  "totalIsLowerBound": false,
  "nextCursor": "djEuMi4xYzJm...",
  "attribution": { "text": "Vagas via Joonow", "url": "https://www.joonow.com/pt-br/vagas?q=analista%20de%20dados" }
}

Endpoints

Todos são GET e respondem JSON. Os links das respostas são absolutos e canônicos: use-os como vêm.

EndpointO que devolve
GET /api/v1/jobsBusca de vagas abertas, com filtros e paginação por cursor.
GET /api/v1/jobs/{id}Uma vaga, com a descrição em texto e em HTML limpo.
GET /api/v1/companies/{id}Uma empresa com vaga aberta: totais, cidades, cargos, salários informados e a primeira página das vagas.
GET /api/v1/companies/{id}/jobsAs vagas abertas de uma empresa, com paginação por cursor.
GET /api/v1/market-indexA edição mais recente do Índice Joonow de Vagas (ou a preliminar do mês).
GET /api/v1/market-index/{yyyy-MM}Uma edição mensal do Índice.
GET /api/v1/market-index/editionsA lista das edições publicadas.
GET /api/v1/trends/storiespeças mais novas do Joonow Tendências (reportagens, resumo do dia, Pesquisa Voz do Candidato)
GET /api/v1/trends/insights?role=&city=o que mudou para um cargo e uma cidade
GET /api/v1/openapi.jsonA descrição da API em OpenAPI 3.1, para gerar clientes e testar.

Filtros da busca

Os mesmos da busca do site. Filtros com vários valores aceitam a chave repetida (work=Remote&work=Hybrid) ou valores separados por vírgula; vale qualquer um deles.

ParâmetroValores
qPalavras-chave ou frase curta: cargo, habilidade ou empresa (até 200 caracteres).
lCidade ou UF, por exemplo Campinas ou SP. Até 12.
workRemote, Hybrid, OnSite ou Anywhere (remotas de qualquer lugar; com country, também as remotas de fora abertas ao país).
typeFullTime, PartTime, Contractor, Temporary, Intern, Volunteer, PerDiem ou Other.
levelApprentice, Intern, Entry, Operational, Professional, Management ou Executive.
daysPublicadas nos últimos N dias, de 1 a 365.
salarySalário mensal mínimo na moeda da busca (currency); só entram vagas com salário informado nessa moeda, sem câmbio.
sortrelevance (padrão), date (mais recentes) ou salary (maior salário).
langIdioma das vagas: pt, en ou es. Sem ele, todos.
limitVagas por página, de 1 a 50 (padrão 20).
cursorO valor de nextCursor da resposta anterior.
countryPaís das vagas (ISO 3166-1 alfa-2, só das Américas: BR, US, MX, CA, AR...), como a seção do país no site. Sem ele, todas as Américas.
currencyMoeda de salary e da ordem por salário (ISO 4217: BRL, USD, MXN, CAD...). Sem ela, a do país; sem país, BRL.

Paginação

Cada resposta traz nextCursor. Para a próxima página, repita a mesma busca com cursor=valor. O cursor só vale para a mesma busca e o mesmo limit, e nulo quer dizer última página. Como no site, a busca vai até 50 páginas: para ir além, refine os filtros.

Erros

Os erros seguem o formato problem+json (RFC 9457), sempre com um campo code estável e, quando for um parâmetro, o campo param.

codeStatusQuando acontece
invalid_parameter400Um parâmetro tem valor inválido (o campo param diz qual).
invalid_cursor400O cursor está malformado ou é de outra busca.
invalid_api_key401A chave enviada não existe, foi revogada ou está malformada.
job_not_found404A vaga não existe ou já foi encerrada.
company_not_found404A empresa não existe ou não tem vaga aberta.
edition_not_found404A edição do Índice ainda não foi publicada.
rate_limited429Passou do limite por minuto. Espere o tempo do Retry-After.
daily_quota_exceeded429A chave passou da cota do dia, que volta à meia-noite UTC.
search_unavailable503A busca está fora do ar por instantes. Tente de novo depois do Retry-After.

Chaves e limites

Sem chave, a API e o MCP já funcionam, com limites por IP. Com uma chave grátis, os limites sobem e você acompanha o uso na sua conta.

AcessoPor minutoPor dia
Sem chave, API10 por IPsem cota diária
Sem chave, MCP30 por IPsem cota diária
Com chave grátis6010.000

Crie a chave na sua conta e mande no cabeçalho X-Api-Key (ou Authorization: Bearer). Ela aparece uma vez só; guarde num lugar seguro e nunca publique. Criar minha chave

curl -H "X-Api-Key: jnk_..." "https://www.joonow.com/api/v1/jobs/k3j9x2m4pq"

Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; com chave, também X-Daily-Limit e X-Daily-Remaining. Passou do limite, a resposta é 429 com Retry-After.

Servidor MCP para assistentes de IA

O Model Context Protocol (MCP) deixa assistentes de IA consultarem a Joonow no meio da conversa: "ache vagas remotas de analista de dados" vira uma busca de verdade, com o link de cada vaga. O servidor é remoto, só de leitura e não pede login.

Endereço (HTTP streamable):

https://www.joonow.com/mcp

Ferramentas

  • search_jobs: busca vagas por cargo, país, local, modelo de trabalho, contrato, nível, data e salário.
  • get_job: devolve uma vaga completa pelo id ou pelo link.
  • get_company: devolve uma empresa que está contratando, com números e as primeiras vagas.
  • market_index: devolve os números do Índice Joonow de Vagas do mês.
  • market_insights: o que mudou para um cargo ou uma cidade: Raio-X da profissão, quem está contratando e as reportagens do Joonow Tendências.
  • latest_stories: as peças mais novas do Joonow Tendências, cada uma com três frases para citar e o link.

Como conectar

Claude Code

claude mcp add --transport http joonow https://www.joonow.com/mcp
claude mcp add --transport http joonow https://www.joonow.com/mcp --header "X-Api-Key: jnk_..."

VS Code (.vscode/mcp.json)

{
  "servers": {
    "joonow": { "type": "http", "url": "https://www.joonow.com/mcp" }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "joonow": { "url": "https://www.joonow.com/mcp" }
  }
}

Claude: em Configurações › Conectores, adicione um conector personalizado com o endereço acima.

ChatGPT: em Configurações › Apps e conectores, ligue o modo desenvolvedor e crie um conector com o endereço acima.

Com chave, os limites do MCP são os da sua chave: mande o cabeçalho X-Api-Key, como no exemplo do Claude Code.

Como citar a Joonow

Ao mostrar os dados, mostre "Vagas via Joonow" com link junto das vagas e use o link de cada vaga (url) e o de candidatura (applyUrl) como a API entrega. Atualize as vagas guardadas em até 24 horas. Revender a base, no todo ou em parte, não é permitido.

Termos da API