medicamentos.api.br

Documentação da API

API REST em JSON, respostas e erros em português. Autenticação via header X-API-Key. Ainda não tem key? Gere uma grátis.

⚡ Quickstart

Base URL:

https://medicamentos.api.br

Buscar medicamentos por nome:

curl -H "X-API-Key: SUA_KEY" \
  "https://medicamentos.api.br/api/v1/medicamentos?nome=dipirona&pagina=1"

🔐 Autenticação

Toda requisição deve enviar a key (32 caracteres hexadecimais) no header X-API-Key. A key é gerada em /api e enviada por e-mail.

X-API-Key: SUA_KEY

Toda resposta inclui os headers X-RateLimit-Limit e X-RateLimit-Remaining com o seu limite do período principal (diário no Free/Pro, mensal no Business) e o saldo restante. O plano Free também tem um teto mensal (1.000 requisições/mês) além do diário — o que estourar primeiro bloqueia.

📚 Endpoints

GET /api/v1/medicamentos Free+

Busca paginada de medicamentos por nome (20 resultados por página).

Parâmetros (query)

  • nome — termo de busca, mínimo 2 caracteres (ex.: dipirona)
  • pagina — página do resultado, começa em 1 (opcional)

Exemplo de resposta

{
  "total": 42,
  "pagina": 1,
  "totalPaginas": 3,
  "porPagina": 20,
  "resultados": [
    {
      "registro": "186100010",
      "nome": "ZOMIG",
      "fabricante": "GRÜNENTHAL DO BRASIL FARMACÊUTICA LTDA.",
      "principioAtivo": "zolmitriptana",
      "categoria": "ANALGESICOS CONTRA ENXAQUECA"
    }
  ]
}

GET /api/v1/medicamentos/{registro} Free+

Detalhe de um medicamento pelo número de registro ANVISA, com o histórico de preços CMED vigentes.

Parâmetros (path)

  • registro — número de registro ANVISA

Exemplo de resposta

{
  "registro": "186100010",
  "nome": "ZOMIG",
  "fabricante": "GRÜNENTHAL DO BRASIL FARMACÊUTICA LTDA.",
  "principioAtivo": "zolmitriptana",
  "categoria": "ANALGESICOS CONTRA ENXAQUECA",
  "precosCMED": [
    { "uf": "Nacional", "regime": "0%", "pf": 46.61, "pmvg": 40.12, "referencia": "Abril/2026", "laboratorio": "GRUNENTHAL DO BRASIL FARMACEUTICA LTDA", "apresentacao": "2,5MG CT BL AL PLAS INC X 2 COM", "matchConfidence": "alta" },
    { "uf": "Nacional", "regime": "20%", "pf": 58.26, "pmvg": 50.15, "referencia": "Abril/2026", "laboratorio": "GRUNENTHAL DO BRASIL FARMACEUTICA LTDA", "apresentacao": "2,5MG CT BL AL PLAS INC X 2 COM", "matchConfidence": "alta" }
  ]
}

precosCMED traz uma linha por UF/regime tributário/apresentação vigente na tabela CMED — como um medicamento pode ter várias apresentações e fabricantes cadastrados, é normal vir mais de uma entrada para o mesmo medicamento, uma por apresentação/fabricante (não é mais uma síntese única) (pf = preço fábrica, pmvg = preço máximo de venda ao governo, pode ser null, laboratorio e apresentacao vêm como cadastrados na tabela CMED). Lista vazia quando o medicamento não consta na tabela CMED. matchConfidence indica o grau de certeza do casamento entre o medicamento e o preço: alta (nome comercial exato), media (princípio ativo + dosagem) ou baixa (princípio ativo + fabricante — pode ser uma embalagem ou dosagem diferente da real; trate como aproximado).

GET /api/v1/principios-ativos/{slug} Pro+

Todos os medicamentos de um princípio ativo — ideal para comparação de genéricos.

Parâmetros

  • slug (path) — princípio ativo em slug (ex.: zolmitriptana)

Exemplo de resposta

{
  "principioAtivo": "zolmitriptana",
  "total": 1,
  "medicamentos": [
    {
      "registro": "186100010",
      "nome": "ZOMIG",
      "fabricante": "GRÜNENTHAL DO BRASIL FARMACÊUTICA LTDA.",
      "categoria": "ANALGESICOS CONTRA ENXAQUECA"
    }
  ]
}

GET /api/v1/medicamentos/{registro}/bula Pro+

Bula completa do medicamento, em seções estruturadas (JSON, não PDF), a partir do Bulário Eletrônico da ANVISA. Disponível nos planos Pro e Business.

Parâmetros

  • registro (path) — nº de registro ANVISA, só dígitos (ex.: 102980568)

Exemplo de resposta

{
  "registro": "102980568",
  "bula": {
    "paraQueServe": "…",
    "comoTomar": "…",
    "contraindicacoes": "…",
    "efeitosColaterais": "…",
    "composicao": "…",
    "precaucoes": "…",
    "extracaoFalhou": false
  }
}

Retorna 404 bula_nao_encontrada quando não há bula para o registro. extracaoFalhou: true significa que o PDF da bula existe mas a extração automática não conseguiu reconhecer as seções — texto pode estar incompleto; não confunda com "sem bula publicada".

GET /api/v1/ean/{codigo} Free+

Busca por código de barras (EAN-13) — ideal para PDV de farmácia e conferência de preço teto CMED no balcão. Resolve o EAN para o registro ANVISA e devolve o medicamento com preços CMED. Cobre ~25 mil EANs da tabela CMED vigente.

Parâmetros

  • codigo (path) — EAN-13, só dígitos (ex.: 7891106000956)

Exemplo de resposta

{
  "registro": "170560023",
  "nome": "…",
  "fabricante": "…",
  "principioAtivo": "…",
  "categoria": "…",
  "precosCMED": [ { "uf": "Nacional", "regime": "0%", "pf": 12.34, "pmvg": 10.87, "referencia": "Abril/2026", "laboratorio": "…", "apresentacao": "…", "matchConfidence": "alta" } ]
}

Mesmo formato de /api/v1/medicamentos/{registro} — inclusive várias entradas por apresentação/fabricante quando aplicável. Retorna 400 ean_invalido se o código não tiver 13 dígitos e 404 nao_encontrado quando o EAN não consta no índice.

🚨 Códigos de erro

Erros são retornados em JSON, em português, no formato { "erro", "mensagem" }:

{
  "erro": "limite_excedido",
  "mensagem": "Limite diário de requisições atingido. Tente novamente após a meia-noite (horário de Brasília)."
}
HTTP Campo erro Quando ocorre
400 parametro_invalido Parâmetro ausente ou inválido (ex.: nome com menos de 2 caracteres)
401 nao_autenticado / chave_invalida Header X-API-Key ausente ou key inválida
403 tier_insuficiente Endpoint não disponível no seu plano
404 nao_encontrado Registro ou princípio ativo inexistente
429 limite_excedido Limite diário ou mensal atingido — resposta inclui header Retry-After

📈 Limites por plano

Plano Limite Endpoints
Free 100 req/dia (máx. 1.000/mês) Busca por nome, consulta por registro, busca por EAN
Pro 10.000 req/dia + princípio ativo, bula completa
Business 100.000 req/mês Tudo do Pro, limite mensal (não diário)

Contador diário reinicia à meia-noite, mensal no dia 1º (horário de Brasília). Acompanhe seu saldo pelos headers X-RateLimit-Limit e X-RateLimit-Remaining. Estourou o limite? Veja os planos Pro e Business.

Pronto para começar?

Gerar API key grátis →