curl --request GET \
--url https://api.perfectreferral.com/v1/practitioner-locations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.perfectreferral.com/v1/practitioner-locations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.perfectreferral.com/v1/practitioner-locations/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.perfectreferral.com/v1/practitioner-locations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.perfectreferral.com/v1/practitioner-locations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.perfectreferral.com/v1/practitioner-locations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perfectreferral.com/v1/practitioner-locations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"line1": "123 Main Street",
"city": "San Diego",
"state": "CA",
"postalCode": "92103",
"geocoding": {
"latitude": 32.7469572,
"longitude": -117.1663201
},
"staleAffiliationRisk": {
"label": "very_likely_active"
},
"sources": [
{
"name": "CMS National Provider Directory",
"version": "20260507",
"observedAt": "2026-07-20T21:21:49Z"
},
{
"name": "NPPES",
"version": "20260712",
"observedAt": "2026-07-30T22:13:13Z"
}
],
"servedModels": {
"staleAffiliationRisk": "v1.0"
}
}{
"code": "400",
"message": "invalid path parameter \"id\""
}{
"code": "401",
"message": "Unauthorized"
}{
"code": "403",
"message": "pro tier required to access this model"
}{
"code": "404",
"message": "No practitioner location found for the given id"
}{
"code": "429",
"message": "Too Many Requests"
}{
"code": "500",
"message": "Unexpected server error"
}Get practitioner location by id
Returns detailed information about a single practitioner location, including the sources that report that the practitioner practices at this location.
curl --request GET \
--url https://api.perfectreferral.com/v1/practitioner-locations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.perfectreferral.com/v1/practitioner-locations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.perfectreferral.com/v1/practitioner-locations/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.perfectreferral.com/v1/practitioner-locations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.perfectreferral.com/v1/practitioner-locations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.perfectreferral.com/v1/practitioner-locations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.perfectreferral.com/v1/practitioner-locations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"line1": "123 Main Street",
"city": "San Diego",
"state": "CA",
"postalCode": "92103",
"geocoding": {
"latitude": 32.7469572,
"longitude": -117.1663201
},
"staleAffiliationRisk": {
"label": "very_likely_active"
},
"sources": [
{
"name": "CMS National Provider Directory",
"version": "20260507",
"observedAt": "2026-07-20T21:21:49Z"
},
{
"name": "NPPES",
"version": "20260712",
"observedAt": "2026-07-30T22:13:13Z"
}
],
"servedModels": {
"staleAffiliationRisk": "v1.0"
}
}{
"code": "400",
"message": "invalid path parameter \"id\""
}{
"code": "401",
"message": "Unauthorized"
}{
"code": "403",
"message": "pro tier required to access this model"
}{
"code": "404",
"message": "No practitioner location found for the given id"
}{
"code": "429",
"message": "Too Many Requests"
}{
"code": "500",
"message": "Unexpected server error"
}id returned in the locations array of the Get practitioner by NPI number endpoint.
The response includes:
- Address: the street address, city, state, and postal code for the location
- Geocoding: coordinates for the location’s address, when available
- Stale affiliation risk: proprietary information about whether the practitioner is actually seeing patients at this location
- Sources: each dataset that reports that the practitioner practices at this location, with its version and the date of the pipeline run that produced it
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your API token.
Path Parameters
The id corresponding to the practitioner location. These can be found in the locations objects within the Get practitioner by NPI number endpoint.
Query Parameters
The version of the stale affiliation risk model to use, as enumerated by GET /models. Defaults to the latest version if omitted.
Response
Expected response to a valid request
A single practitioner–location pair, including the address, our derived signals, and the sources that report it.
The first line of the street address, typically the street number and name.
The city name.
The two-letter USPS abbreviation for the state or territory.
The postal (ZIP) code, in the five digit form.
The datasets that report that the practitioner practices at this location.
Show child attributes
Show child attributes
The version of each model whose output appears in this response. Always present; a key appears only when that model was served for this request, so an absent key means that model contributed nothing to the response.
Show child attributes
Show child attributes
The second line of the street address, when present, such as a suite, unit, or floor.
Geocoding data for the location's address, if available.
Show child attributes
Show child attributes
Stale affiliation risk data for this practitioner–location pair, if available.
Show child attributes
Show child attributes