Como consumir APIs REST em Python em poucos minutos

Publicado em: 13/03/2026
Tempo de leitura: 11 minutos

Consumir uma API (Application Programming Interface) é uma das habilidades mais valiosas para qualquer desenvolvedor moderno. Em termos simples, uma API funciona como um garçom em um restaurante: você faz um pedido, o garçom leva até a cozinha (o servidor) e traz a resposta (os dados) de volta para você. No ecossistema tecnológico atual, aprender como consumir APIs REST em Python permite que suas aplicações conversem com serviços gigantescos como Google, Twitter, Spotify e sistemas de previsão do tempo. Python se destaca nessa tarefa por sua sintaxe limpa e por possuir ferramentas poderosas que transformam linhas complexas de código em comandos simples e legíveis.

O que é uma API REST e por que usar Python?

Uma API REST (Representational State Transfer) é um conjunto de regras que define como dispositivos e aplicações devem se comunicar pela internet usando o protocolo HTTP. Elas são versáteis porque utilizam formatos de dados leves e universais, como o JSON. Para quem está saindo da lógica de programação com Python e deseja entrar no mundo real do desenvolvimento, as APIs são a porta de entrada para criar sistemas integrados.

Python é a linguagem preferida para essa tarefa devido à sua vasta coleção de bibliotecas em Python. Em vez de lidar com sockets de baixo nível ou protocolos manuais, você pode usar ferramentas que resolvem 90% do trabalho sujo. Isso faz com que a tarefa de como consumir APIs REST em Python seja executada em poucos minutos, permitindo focar na inteligência do seu software em vez da infraestrutura de rede.

Preparando o ambiente: A biblioteca Requests

Embora o Python venha com módulos nativos para lidar com URLs, a comunidade desenvolveu um padrão de fato chamado Requests. Ela é descrita como “HTTP para Humanos”. Antes de começar, você precisa garantir que ela esteja instalada no seu sistema ou no seu ambiente virtual venv no Python.

Para instalar a biblioteca, abra seu terminal e digite o seguinte comando:

Bash
pip install requests

Após a instalação, você estará pronto para interagir com praticamente qualquer serviço web disponível. A biblioteca requests em Python simplifica o envio de requisições GET, POST, PUT e DELETE, tornando o processo intuitivo até mesmo para quem ainda é um python para iniciantes.

Entendendo os Verbos HTTP

Para interagir com uma API, você precisa saber o que quer fazer. O protocolo HTTP define “verbos” ou métodos que indicam a intenção da sua chamada:

  • GET: Usado para buscar ou ler informações de um servidor.
  • POST: Usado para enviar novos dados para o servidor (ex: criar um novo usuário).
  • PUT: Usado para atualizar informações existentes.
  • DELETE: Usado para remover informações.

Na maioria dos casos, quando você está começando a aprender como consumir APIs REST em Python, o método GET será o seu companheiro mais frequente, pois ele permite extrair dados publicamente disponíveis para análise ou exibição.

Sua primeira requisição GET na prática

Vamos utilizar uma API pública e gratuita para testes: a JSONPlaceholder. Ela simula um banco de dados de posts de um blog. O objetivo aqui é buscar uma lista de postagens e exibir o título de cada uma no console.

Passo 1: Importação e Requisição

O primeiro passo é importar o módulo e definir a URL que queremos acessar. Usamos a função requests.get() para disparar o sinal para o servidor.

Python
import requests

url = "https://jsonplaceholder.typicode.com/posts"
resposta = requests.get(url)

Passo 2: Verificação do Status Code

Sempre que fazemos uma requisição, o servidor nos devolve um código de status. O código 200 significa “OK”. Se você receber um 404, a página não foi encontrada. Se for 500, o servidor está com problemas. É fundamental tratar esses retornos para evitar que o seu script executável Python pare de funcionar inesperadamente.

Python
if resposta.status_code == 200:
    print("Sucesso ao acessar a API!")
else:
    print(f"Erro: {resposta.status_code}")

Passo 3: Manipulando JSON

A maioria das APIs modernas responde no formato JSON (JavaScript Object Notation). O Python possui suporte nativo para converter JSON em dicionários e listas, facilitando a manipulação direta. Para saber mais sobre como lidar com esse formato, veja nosso guia sobre JSON no Python.

Python
dados = resposta.json()
# Agora 'dados' é uma lista de dicionários
for post in dados[:5]:  # Pegamos apenas os 5 primeiros
    print(f"Título: {post['title']}")

Enviando Dados com o Método POST

Consumir uma API não se resume a apenas ler dados; muitas vezes você precisará enviar informações. Imagine que você está criando um sistema de automação e precisa cadastrar um novo cliente em um CRM via API. Para isso, usamos o método POST.

No método POST, enviamos um corpo (payload) com as informações. Geralmente, esse corpo é um dicionário Python que a biblioteca Requests converte automaticamente para JSON antes de enviar.

Python
novo_post = {
    "title": "Aprendendo APIs",
    "body": "Este é um guia de como consumir APIs em Python",
    "userId": 1
}

resposta_post = requests.get(url, json=novo_post)
print(f"Status do POST: {resposta_post.status_code}")

Observe que o parâmetro json=novo_post cuida de toda a conversão de tipos e cabeçalhos necessários para que o servidor entenda que estamos enviando dados estruturados.

Autenticação e Cabeçalhos (Headers)

Nem todas as APIs são abertas ao público sem restrições. Muitas exigem uma “API Key” ou um Token de autenticação. Segundo a documentação técnica sobre APIs da Wikipédia, esses mecanismos garantem que o provedor do serviço saiba quem está acessando e possa controlar o volume de requisições.

Para enviar essas chaves, utilizamos o parâmetro headers. Os cabeçalhos funcionam como etiquetas na caixa do seu pedido, informando detalhes extras sobre a requisição.

Python
cabecalhos = {
    "Authorization": "Bearer SEU_TOKEN_AQUI",
    "Content-Type": "application/json"
}

resposta = requests.get(url, headers=cabecalhos)

Armazenar essas chaves diretamente no código é um risco de segurança. O ideal é ler variáveis de ambiente Python para manter suas credenciais protegidas e longe de repositórios públicos como o GitHub.

Tratamento de Erros em Requisições

Na internet, as coisas podem falhar. O servidor pode estar fora do ar, sua conexão de rede pode cair ou a URL pode mudar. Se você não tratar esses problemas, seu programa exibirá mensagens de erro confusas para o usuário final. A forma mais elegante de gerenciar isso é usando blocos de controle de exceção.

O Python oferece uma estrutura robusta para capturar esses problemas. Ao utilizar try-except em Python, você garante que sua aplicação continue rodando ou forneça uma mensagem amigável em caso de falha de conexão.

Python
try:
    r = requests.get("https://api.site-inexistente.com", timeout=5)
    r.raise_for_status() 
except requests.exceptions.HTTPError as errh:
    print(f"Erro HTTP: {errh}")
except requests.exceptions.ConnectionError as errc:
    print(f"Erro de Conexão: {errc}")
except requests.exceptions.Timeout as errt:
    print(f"Erro de Timeout: {errt}")
except requests.exceptions.RequestException as err:
    print(f"Algo deu errado: {err}")

O método raise_for_status() é uma excelente prática, pois ele força o Python a gerar uma exceção se o código de retorno for um erro (4xx ou 5xx).

Trabalhando com Parâmetros de URL (Query Strings)

Muitas vezes, você deseja filtrar os resultados de uma API. Em vez de trazer todos os dados, você quer apenas os do dia de hoje ou de uma categoria específica. Isso é feito através de parâmetros na URL, também conhecidos como Query Strings (aquilo que aparece como ?chave=valor na barra do navegador).

A biblioteca Requests permite passar um dicionário para o parâmetro params, o que evita que você precise construir strings manualmente, um processo propenso a erros de sintaxe.

Python
parametros = {
    "lat": -23.55,
    "lon": -46.63,
    "appid": "SUA_CHAVE_API"
}

r = requests.get("https://api.openweathermap.org/data/2.5/weather", params=parametros)

Essa abordagem é muito mais limpa e legível, facilitando a manutenção futura do seu código.

Código Completo do Projeto

Abaixo, consolidamos tudo o que aprendemos em um script funcional que consome uma API de posts, trata erros, filtra dados e exibe os resultados de forma organizada. Este é um exemplo real de como consumir APIs REST em Python de maneira profissional.

Python
import requests

def buscar_posts():
    # URL da API de testes
    api_url = "https://jsonplaceholder.typicode.com/posts"
    
    try:
        # 1. Fazendo a requisição com um timeout de 10 segundos
        print("Conectando à API...")
        resposta = requests.get(api_url, timeout=10)
        
        # 2. Verifica se a requisição foi bem sucedida
        resposta.raise_for_status()
        
        # 3. Converte a resposta para JSON
        lista_posts = resposta.json()
        
        # 4. Processa e exibe as informações
        print(f"\nTotal de posts encontrados: {len(lista_posts)}")
        print("-" * 30)
        
        for post in lista_posts[:3]: # Exibe apenas os 3 primeiros
            ID = post['id']
            TITULO = post['title'].capitalize()
            print(f"Post #{ID}: {TITULO}")
            
    except requests.exceptions.HTTPError as e:
        print(f"Erro de servidor ou página não encontrada: {e}")
    except requests.exceptions.ConnectionError:
        print("Erro de rede. Verifique sua conexão com a internet.")
    except Exception as erro_generico:
        print(f"Ocorreu um erro inesperado: {erro_generico}")

if __name__ == "__main__":
    buscar_posts()

Dicas Avançadas e Boas Práticas

Ao se aprofundar no consumo de APIs, você encontrará desafios como limites de taxa (Rate Limiting) e performance. Grandes provedores limitam quantas requisições você pode fazer por minuto. Se você ultrapassar esse limite, seu IP pode ser bloqueado temporariamente.

Para otimizar o desempenho, considere usar sessões (requests.Session()). As sessões permitem que você reutilize a mesma conexão TCP para várias requisições ao mesmo servidor, o que torna o processo significativamente mais rápido. Além disso, se você precisar fazer milhares de requisições simultâneas, vale a pena estudar o asyncio no Python para realizar chamadas assíncronas sem travar a execução do programa.

Por fim, sempre leia a documentação oficial da API que deseja consumir. Provedores como a MDN Web Docs da Mozilla oferecem explicações detalhadas sobre como os métodos HTTP devem se comportar em diferentes cenários, garantindo que você construa integrações sólidas e confiáveis.

Perguntas Frequentes

O que significa o erro 403 Forbidden?

Este erro indica que o servidor entendeu sua requisição, mas se recusa a autorizá-la. Geralmente acontece por falta de uma API Key válida ou permissões insuficientes no seu token.

Qual a diferença entre JSON e Dicionário Python?

JSON é um formato de texto para troca de dados. Dicionário é uma estrutura de dados na memória do Python. A biblioteca Requests faz a ponte transformando um no outro automaticamente.

Posso consumir uma API sem instalar nada?

Sim, você pode usar o módulo nativo urllib.request, mas ele é muito mais complexo e exige mais linhas de código para fazer tarefas simples que o Requests resolve com uma função.

Como esconder minha senha no código do script?

Use variáveis de ambiente. Você cria um arquivo oculto (como o .env), coloca seus dados lá e usa bibliotecas como o python-dotenv para ler esses valores sem expô-los no código-fonte.

O que são Status Codes 5xx?

Códigos que começam com 5 (como 500 ou 503) indicam que o erro está no servidor da API, e não no seu código Python.

Como enviar um arquivo via API?

A biblioteca Requests permite enviar arquivos usando o parâmetro files na função post(). O Python cuida da codificação correta para o envio binário.

Toda API é REST?

Não, existem outros tipos como SOAP ou GraphQL. No entanto, REST é o padrão mais comum na web moderna devido à sua simplicidade e flexibilidade.

O que é o parâmetro timeout?

É o tempo máximo que seu programa vai esperar por uma resposta do servidor. É vital para evitar que seu script fique travado para sempre se o site cair.

Agora que você domina os fundamentos de como consumir APIs REST em Python, o próximo passo é aplicar esse conhecimento em projetos que gerem valor. Seja criando um bot para coletar preços ou integrando sistemas de pagamento, o domínio das APIs é o que separa os programadores básicos dos desenvolvedores de soluções completas. Comece pequeno, teste requisições simples e logo você estará construindo ecossistemas de software interconectados.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Desenvolvimento Web
    Foto do Leandro Hirt

    Como criar um servidor HTTP simples em Python em 5 minutos

    Você já se perguntou como os desenvolvedores testam suas criações web de forma rápida sem precisar configurar servidores complexos como

    Ler mais

    Tempo de leitura: 9 minutos
    19/02/2026
    Desenvolvimento Web
    Foto do Leandro Hirt

    Como Usar PyScript: Execute Python no Seu Navegador

    Você já imaginou poder criar sites incríveis usando apenas a linguagem Python? Durante muito tempo, quem queria construir a parte

    Ler mais

    Tempo de leitura: 14 minutos
    05/02/2026
    Logo do Python ao lado do logo da bilioteca Selenium
    Desenvolvimento WebAutomação e Scripts
    Foto do Leandro Hirt

    Selenium no Python: Automação Web Completa

    A automação web se tornou uma habilidade essencial para programadores que desejam economizar tempo em tarefas repetitivas. O Selenium é

    Ler mais

    Tempo de leitura: 17 minutos
    18/12/2025
    logo da FastAPI
    Desenvolvimento Web
    Foto do Leandro Hirt

    FastAPI em Python: Como Criar APIs Rápidas

    O FastAPI é uma das ferramentas mais populares para criar APIs em Python. Ele combina simplicidade, velocidade e recursos modernos

    Ler mais

    Tempo de leitura: 13 minutos
    14/09/2025
    Logo do Flask em um fundo branco
    Desenvolvimento Web
    Foto do Leandro Hirt

    Tutorial em Flask: Do Zero ao Primeiro Projeto

    Este tutorial em Flask vai mostrar como criar uma aplicação web simples. Você não precisa de conhecimento prévio em programação

    Ler mais

    Tempo de leitura: 9 minutos
    17/04/2025
    texto escrito "o que é Django", com a logo do Django
    Desenvolvimento Web
    Foto do Leandro Hirt

    Django: Conheça o Framework Web de Alto Nível

    Se você está começando a aprender Python e quer desenvolver aplicações web profissionais, o Django é o framework ideal. Usado

    Ler mais

    Tempo de leitura: 16 minutos
    06/04/2025