web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Microsoft Dynamics 365 | Integration, Dataverse...
Suggested Answer

Access Dataverse using python

(5) ShareShare
ReportReport
Posted on by 16
How do I access Dataverse using Python? What are the prerequisites required for connecting to Dataverse using an App service principal, Client ID, and Secret?
I have the same question (0)
  • Martin Dráb Profile Picture
    239,040 Most Valuable Professional on at
    Dataverse comes with Web API, which could be easily used from Python. But... there is also pyDataverse project which could make things even simpler. (I have no experience with it.)
     
    Here are OAuth libraries for Python: https://oauth.net/code/python/.
  • Vahid Ghafarpour Profile Picture
    12,228 Super User 2026 Season 1 on at
  • syamna Profile Picture
    16 on at
    Hi VaHiX,
        Thanks for your response,


    Here it uses interactive MSAL authentication it doesn't work in my case I need service-to-service communication or automated tasks.
    I tried,
    app = msal.ConfidentialClientApplication(
    client_id,
    authority=authority_url,
    client_credential=client_secret,
    )
    token_response = app.acquire_token_for_client(scopes=scope)

    it is able to generate token but failed at below,

    dataverse_url = 'https://<org-name>.crm.dynamics.com/api/data/v9.2/'
    headers = {
    'Authorization': f'Bearer {token}',
    'OData-MaxVersion': '4.0',
    'OData-Version': '4.0',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
    }
    response = requests.get(f"{dataverse_url}accounts", headers=headers)

    I am getting error:
    requests.exceptions.ConnectionError: HTTPConnectionPool(host='<org-name>.crm.dynamics.com', port=443): Max retries exceeded with url: /api/data/v9.2/accounts (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f544af9a5d0>: Failed to establish a new connection: getaddrinfo failed',))

    What might be the reason? Do I need to get any other permission for service-to-service communication or any other set up required here?
  • Vahid Ghafarpour Profile Picture
    12,228 Super User 2026 Season 1 on at
     

    ** Please don't forget to close up the thread here by Like and verify it as an answer if it was solved **

  • Suggested answer
    fabipfr Profile Picture
    13 on at
    I‘m assuming you want to work with the data from Dataverse tables.


    I developed a python package for that. It leverages pandas DataFrames to handle easy data transformations, imports and exports. 

    https://github.com/fabipfr/DataversePython

    this package became my trusty helper for migrations to Dynamics 365 since pandas lets you import and transform data from virtually anything :) 


    check my blog for detailed examples of the features:
    https://blog.fabianpfriem.com/


    hope this helps someone out there struggling with excel imports or dataflows..

    I‘m assuming you want to work with the data from Dataverse tables.


    I developed a python package for that. It leverages pandas DataFrames to handle easy data transformations, imports and exports. 

    https://github.com/fabipfr/DataversePython


    this package became my trusty helper for migrations to Dynamics 365 since pandas lets you import and transform data from virtually anything :) 


    check my blog for detailed examples of the features:
    https://blog.fabianpfriem.com/


    hope this helps someone out there struggling with excel imports or dataflows..
  • Suggested answer
    DAnny3211 Profile Picture
    11,417 Super User 2026 Season 1 on at

    Hi Syazma,

    Great question! You can access Dataverse using Python by authenticating with an App Registration in Azure using a Client ID and Client Secret. Here's a general guide:

    Prerequisites

    1. Azure App Registration

      • Register an app in Azure Active Directory.
      • Note the Client ID, Tenant ID, and Client Secret.
      • Assign API permissions for Dataverse (Dynamics CRM).
    2. Dataverse Environment URL

      • Typically looks like:
        https://<your_org>.crm.dynamics.com
    3. Python Libraries

      • Use msal for authentication and requests for API calls.

    Sample Python Code

    import msal
    import requests
     
    client_id = "<your_client_id>"
    client_secret = "<your_client_secret>"
    tenant_id = "<your_tenant_id>"
    authority = f"https://login.microsoftonline.com/{tenant_id}"
    scope = ["https://your_org.crm.dynamics.com/.default"]
     
    app = msal.ConfidentialClientApplication(client_id, authority=authority, client_credential=client_secret)
    token_response = app.acquire_token_for_client(scopes=scope)
     
    access_token = token_response['access_token']
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json',
        'OData-MaxVersion': '4.0',
        'OData-Version': '4.0'
    }
     
    url = "https://your_org.crm.dynamics.com/api/data/v9.2/accounts"
    response = requests.get(url, headers=headers)
    print(response.json())

    Let me know if this helps, and please mark the response as helpful if it answered your question 😊

    Best regards!

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Stars!

Meet the Microsoft Dynamics 365 Contact Center Champions

We are thrilled to have these Champions in our Community!

Congratulations to the March Top 10 Community Leaders

These are the community rock stars!

Leaderboard > Microsoft Dynamics 365 | Integration, Dataverse, and general topics

#1
11manish Profile Picture

11manish 174

#2
ManoVerse Profile Picture

ManoVerse 58 Super User 2026 Season 1

#3
Niki Patel Profile Picture

Niki Patel 42

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans