Transportation Laws and Incentives
nrel · Data
Query our database of federal and state laws and incentives for alternative fuels and vehicles, air quality, fuel efficiency, and other transportation-related topics. This dataset powers the Federal and State Laws and Incentives on the Alternative Fuels Data Center.
Authentication
Sample Requests
Return a full list of laws and incentives that match your query.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1.{output_format}?poc=false&limit=10&local=false&recent=false&api_key=DEMO_KEY&expired=false&keyword=test&law_type=example&user_type=example&technology=example&jurisdiction=example&incentive_type=example®ulation_type=example"import requests
params = {
"poc": "false",
"limit": "10",
"local": "false",
"recent": "false",
"api_key": "DEMO_KEY",
"expired": "false",
"keyword": "test",
"law_type": "example",
"user_type": "example",
"technology": "example",
"jurisdiction": "example",
"incentive_type": "example",
"regulation_type": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1.{output_format}",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1.{output_format}');
url.searchParams.set('poc', 'false');
url.searchParams.set('limit', '10');
url.searchParams.set('local', 'false');
url.searchParams.set('recent', 'false');
url.searchParams.set('api_key', 'DEMO_KEY');
url.searchParams.set('expired', 'false');
url.searchParams.set('keyword', 'test');
url.searchParams.set('law_type', 'example');
url.searchParams.set('user_type', 'example');
url.searchParams.set('technology', 'example');
url.searchParams.set('jurisdiction', 'example');
url.searchParams.set('incentive_type', 'example');
url.searchParams.set('regulation_type', '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/nrel.gov/transportation-incentives-laws/0.1.0/v1.{output_format}")
q := baseURL.Query()
q.Set("poc", "false")
q.Set("limit", "10")
q.Set("local", "false")
q.Set("recent", "false")
q.Set("api_key", "DEMO_KEY")
q.Set("expired", "false")
q.Set("keyword", "test")
q.Set("law_type", "example")
q.Set("user_type", "example")
q.Set("technology", "example")
q.Set("jurisdiction", "example")
q.Set("incentive_type", "example")
q.Set("regulation_type", "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/nrel.gov/transportation-incentives-laws/0.1.0/v1.{output_format}")
uri.query = URI.encode_www_form({
"poc" => "false",
"limit" => "10",
"local" => "false",
"recent" => "false",
"api_key" => "DEMO_KEY",
"expired" => "false",
"keyword" => "test",
"law_type" => "example",
"user_type" => "example",
"technology" => "example",
"jurisdiction" => "example",
"incentive_type" => "example",
"regulation_type" => "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/nrel.gov/transportation-incentives-laws/0.1.0/v1.{output_format}?" . http_build_query([
"poc" => "false",
"limit" => "10",
"local" => "false",
"recent" => "false",
"api_key" => "DEMO_KEY",
"expired" => "false",
"keyword" => "test",
"law_type" => "example",
"user_type" => "example",
"technology" => "example",
"jurisdiction" => "example",
"incentive_type" => "example",
"regulation_type" => "example"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Return the law categories for a given category type.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1/category-list.{output_format}?type=tech&api_key=DEMO_KEY"import requests
params = {
"type": "tech",
"api_key": "DEMO_KEY"
}
response = requests.get(
"https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1/category-list.{output_format}",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1/category-list.{output_format}');
url.searchParams.set('type', 'tech');
url.searchParams.set('api_key', 'DEMO_KEY');
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/nrel.gov/transportation-incentives-laws/0.1.0/v1/category-list.{output_format}")
q := baseURL.Query()
q.Set("type", "tech")
q.Set("api_key", "DEMO_KEY")
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/nrel.gov/transportation-incentives-laws/0.1.0/v1/category-list.{output_format}")
uri.query = URI.encode_www_form({
"type" => "tech",
"api_key" => "DEMO_KEY"
})
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/nrel.gov/transportation-incentives-laws/0.1.0/v1/category-list.{output_format}?" . http_build_query([
"type" => "tech",
"api_key" => "DEMO_KEY"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Get the points of contact for a given jurisdiction.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1/pocs.{output_format}?api_key=DEMO_KEY&jurisdiction=example"import requests
params = {
"api_key": "DEMO_KEY",
"jurisdiction": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1/pocs.{output_format}",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/nrel.gov/transportation-incentives-laws/0.1.0/v1/pocs.{output_format}');
url.searchParams.set('api_key', 'DEMO_KEY');
url.searchParams.set('jurisdiction', '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/nrel.gov/transportation-incentives-laws/0.1.0/v1/pocs.{output_format}")
q := baseURL.Query()
q.Set("api_key", "DEMO_KEY")
q.Set("jurisdiction", "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/nrel.gov/transportation-incentives-laws/0.1.0/v1/pocs.{output_format}")
uri.query = URI.encode_www_form({
"api_key" => "DEMO_KEY",
"jurisdiction" => "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/nrel.gov/transportation-incentives-laws/0.1.0/v1/pocs.{output_format}?" . http_build_query([
"api_key" => "DEMO_KEY",
"jurisdiction" => "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 Transportation Laws and Incentives?
Transportation Laws and Incentives is a Data API. Developers commonly use data APIs for:
- enriching your app with third-party datasets
- building data pipelines and ETL workflows
- querying and searching large datasets
- powering research, analysis, and reporting tools
- syncing reference data into your own systems
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Transportation Laws and Incentives 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?