VA Facilities
va · Location
## Background This RESTful API provides information about physical VA facilities. Information available includes geographic location, address, phone, hours of operation, and available services. VA operates several different types of facilities, the types represented in this API include: - Health Facilities (vha) - Benefits Facilities (vba) - Cemeteries (nca) - Vet Centers (vc) To read an FAQ on how wait times are calculated, click the "For more information" link on [this page](https://www.acc
Authentication
Sample Requests
Query facilities by bounding box, latitude and longitude, state, visn, or zip code. Bounding box is specified as four `bbox[]` parameters, long1, lat1, long2, lat2. (Relative order is unimportant.) A query by latitude and longitude returns all facilities in the system, sorted by distance from that
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/facilities?ids=example&lat=51.5074&zip=10001&long=1&page=1&type=health&visn=1&state=example&bbox[]=example&mobile=true&per_page=10&services[]=example"
import requests
params = {
"ids": "example",
"lat": "51.5074",
"zip": "10001",
"long": "1",
"page": "1",
"type": "health",
"visn": "1",
"state": "example",
"bbox[]": "example",
"mobile": "true",
"per_page": "10",
"services[]": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/facilities",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/facilities');
url.searchParams.set('ids', 'example');
url.searchParams.set('lat', '51.5074');
url.searchParams.set('zip', '10001');
url.searchParams.set('long', '1');
url.searchParams.set('page', '1');
url.searchParams.set('type', 'health');
url.searchParams.set('visn', '1');
url.searchParams.set('state', 'example');
url.searchParams.set('bbox[]', 'example');
url.searchParams.set('mobile', 'true');
url.searchParams.set('per_page', '10');
url.searchParams.set('services[]', 'example');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/facilities")
q := baseURL.Query()
q.Set("ids", "example")
q.Set("lat", "51.5074")
q.Set("zip", "10001")
q.Set("long", "1")
q.Set("page", "1")
q.Set("type", "health")
q.Set("visn", "1")
q.Set("state", "example")
q.Set("bbox[]", "example")
q.Set("mobile", "true")
q.Set("per_page", "10")
q.Set("services[]", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
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://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/facilities")
uri.query = URI.encode_www_form({
"ids" => "example",
"lat" => "51.5074",
"zip" => "10001",
"long" => "1",
"page" => "1",
"type" => "health",
"visn" => "1",
"state" => "example",
"bbox[]" => "example",
"mobile" => "true",
"per_page" => "10",
"services[]" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/facilities?" . http_build_query([
"ids" => "example",
"lat" => "51.5074",
"zip" => "10001",
"long" => "1",
"page" => "1",
"type" => "health",
"visn" => "1",
"state" => "example",
"bbox[]" => "example",
"mobile" => "true",
"per_page" => "10",
"services[]" => "example"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Retrieves all available facility IDs only
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/ids?type=health"
import requests
params = {
"type": "health"
}
response = requests.get(
"https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/ids",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/ids');
url.searchParams.set('type', 'health');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/ids")
q := baseURL.Query()
q.Set("type", "health")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
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://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/ids")
uri.query = URI.encode_www_form({
"type" => "health"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/ids?" . http_build_query([
"type" => "health"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Retrieve all VA health facilities that are located within a specified drive time from a specified location based on address (`street_address`, `city`, `state`, and `zip`) or coordinates (`lat` and `lng`). Optional filter parameters include `drive_time` and `services[]`. Results of this operation a
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/nearby?lat=51.5074&lng=1&zip=10001&city=London&page=1&state=example&per_page=20&drive_time=90&services[]=example&street_address=example"
import requests
params = {
"lat": "51.5074",
"lng": "1",
"zip": "10001",
"city": "London",
"page": "1",
"state": "example",
"per_page": "20",
"drive_time": "90",
"services[]": "example",
"street_address": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/nearby",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/nearby');
url.searchParams.set('lat', '51.5074');
url.searchParams.set('lng', '1');
url.searchParams.set('zip', '10001');
url.searchParams.set('city', 'London');
url.searchParams.set('page', '1');
url.searchParams.set('state', 'example');
url.searchParams.set('per_page', '20');
url.searchParams.set('drive_time', '90');
url.searchParams.set('services[]', 'example');
url.searchParams.set('street_address', 'example');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/nearby")
q := baseURL.Query()
q.Set("lat", "51.5074")
q.Set("lng", "1")
q.Set("zip", "10001")
q.Set("city", "London")
q.Set("page", "1")
q.Set("state", "example")
q.Set("per_page", "20")
q.Set("drive_time", "90")
q.Set("services[]", "example")
q.Set("street_address", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
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://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/nearby")
uri.query = URI.encode_www_form({
"lat" => "51.5074",
"lng" => "1",
"zip" => "10001",
"city" => "London",
"page" => "1",
"state" => "example",
"per_page" => "20",
"drive_time" => "90",
"services[]" => "example",
"street_address" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/va.gov/facilities/0.0.1/nearby?" . http_build_query([
"lat" => "51.5074",
"lng" => "1",
"zip" => "10001",
"city" => "London",
"page" => "1",
"state" => "example",
"per_page" => "20",
"drive_time" => "90",
"services[]" => "example",
"street_address" => "example"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with VA Facilities?
VA Facilities is a Location API. Developers commonly use location APIs for:
- tracking assets and vehicles in real time
- building delivery and logistics apps
- finding nearby businesses or services
- geo-fencing and location-based notifications
- address validation and autocomplete
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. VA Facilities is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?