How to Authenticate with Bearer Tokens in Python Requests

Feb 3, 2024 ยท 2 min read

Bearer tokens are a common way for APIs to implement authentication. A bearer token is a cryptic string that represents an authorization issued to the client. The client then includes this token in its request headers to authenticate and access protected API resources.

Here is how you can make authenticated requests with bearer tokens in Python using the Requests module:

First, obtain the bearer token. Typically you get this by authenticating with the API's username/password flow or OAuth workflow. The API documentation should specify how to get a bearer token.

Next, make a Requests GET call and pass the token in the HTTP Authorization header:

import requests

bearer_token = "YOUR_TOKEN"

headers = {"Authorization": f"Bearer {bearer_token}"}

response = requests.get("", headers=headers)


The crucial part is setting the Authorization header to "Bearer YOUR_TOKEN". The API will verify this token and grant access if valid.

Some tips:

  • Bearer tokens often expire and need to be refreshed. Handle 401 errors by re-authenticating.
  • Store tokens securely in environment variables or credential storage.
  • Consider using the requests_oauthlib library to simplify OAuth flows.
  • To recap, getting protected API data with bearer tokens in Python Requests involves:

    1. Obtaining the bearer token from the API
    2. Adding an Authorization: Bearer header to your Requests
    3. Refreshing expired tokens as needed

    This allows you to make authenticated API calls. Handle tokens securely and watch for expiration to build robust applications.

    Browse by tags:

    Browse by language:

    The easiest way to do Web Scraping

    Get HTML from any page with a simple API call. We handle proxy rotation, browser identities, automatic retries, CAPTCHAs, JavaScript rendering, etc automatically for you

    Try ProxiesAPI for free

    curl ""

    <!doctype html>
        <title>Example Domain</title>
        <meta charset="utf-8" />
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />


    Don't leave just yet!

    Enter your email below to claim your free API key: