Find an API

Search public APIs with auth details & Postman guides

← All APIs

Microsoft Dynamics 365 Web API

microsoft.com · Company

Company OAuth2 Free Tier Financial Services Manufacturing Technology CRM ERP Enterprise

OData v4 REST API for Microsoft Dynamics 365 — covering CRM (Sales, Customer Service, Field Service) and ERP (Finance, Supply Chain, Business Central). Access accounts, contacts, opportunities, orders, and financial transactions. Free trial available.

Authentication

OAuth2 OAuth2 with Azure Active Directory (Entra ID). Register an app in Azure portal, grant Dynamics 365 permissions. Free 30-day trial at dynamics.microsoft.com.

Sample Requests

GET Get accounts

Returns CRM account records. Uses OData $select, $filter, $top query options.

https://{org}.crm.dynamics.com/api/data/v9.2/accounts?$top=10&$select=name,emailaddress1,telephone1

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
Accept application/json
Authorization Bearer YOUR_ACCESS_TOKEN
OData-MaxVersion 4.0
curl -X GET "https://{org}.crm.dynamics.com/api/data/v9.2/accounts?$top=10&$select=name%2Cemailaddress1%2Ctelephone1" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "OData-MaxVersion: 4.0"
import requests
params = {
    "$top": "10",
    "$select": "name,emailaddress1,telephone1"
}
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "OData-MaxVersion": "4.0"
}
response = requests.get(
    "https://{org}.crm.dynamics.com/api/data/v9.2/accounts",
    params=params,
    headers=headers,
)
print(response.json())
const url = new URL('https://{org}.crm.dynamics.com/api/data/v9.2/accounts');
url.searchParams.set('$top', '10');
url.searchParams.set('$select', 'name,emailaddress1,telephone1');

const response = await fetch(url, {
  headers: {
    'Accept': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'OData-MaxVersion': '4.0'
  },
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://{org}.crm.dynamics.com/api/data/v9.2/accounts")
	q := baseURL.Query()
	q.Set("$top", "10")
	q.Set("$select", "name,emailaddress1,telephone1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer YOUR_ACCESS_TOKEN")
	req.Header.Set("OData-MaxVersion", "4.0")

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://{org}.crm.dynamics.com/api/data/v9.2/accounts")
uri.query = URI.encode_www_form({
  "$top" => "10",
  "$select" => "name,emailaddress1,telephone1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)
req["Accept"] = "application/json"
req["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"
req["OData-MaxVersion"] = "4.0"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://{org}.crm.dynamics.com/api/data/v9.2/accounts?" . http_build_query([
    "$top" => "10",
    "$select" => "name,emailaddress1,telephone1"
]);
$opts = ["http" => [
    "method" => "GET",
    "header" => implode("\r\n", [
        "Accept: application/json",
        "Authorization: Bearer YOUR_ACCESS_TOKEN",
        "OData-MaxVersion: 4.0"
    ]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. Free 30-day trial at https://dynamics.microsoft.com/en-us/dynamics-365-free-trial/
  2. Register an app in Azure portal → App registrations → New registration
  3. Add API permission: Dynamics CRM → user_impersonation
  4. Token URL: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
  5. Scope: https://{org}.crm.dynamics.com/.default
  6. API is OData v4 — use $filter, $select, $expand, $orderby, $top for querying
  7. For Business Central ERP: base URL is https://api.businesscentral.dynamics.com/v2.0/{tenant}/{env}/api/v2.0

What can you build with Microsoft Dynamics 365 Web API?

Microsoft Dynamics 365 Web API is a Company API. Developers commonly use company APIs for:

  • enriching CRM records with company firmographics
  • building lead-generation and prospecting tools
  • verifying business identity and registration details
  • monitoring competitors and market intelligence
  • powering B2B data enrichment pipelines

OAuth 2.0. OAuth lets your app act on behalf of a user. You redirect them to authorise access, receive a token, then use that token in requests. Best for accessing user-owned data. Microsoft Dynamics 365 Web API is free to use up to a usage limit, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗