API documentation
US Refinery Utilization API
Since 1982How hard America's refineries are running: utilization percent, gross and crude inputs, and operable capacity — weekly, for the US and the five PADD districts.
500 req/mo · No credit card required · One key, every API on the platform
- Checking status…
- Crude inputs since 1982 (rest 1990, PADD 2010)
- 4 metrics · US + 5 PADDs
- Units: percent · inputs in thousand barrels/day · capacity per calendar day
- Release: Wednesdays 10:30 ET (WPSR)
Base URL & authentication
All endpoints live under one base URL. Authenticate every request with your key
in the X-Api-Key header — no OAuth, no signing. The same key works
on every API of the platform.
# Base URL {{GATEWAY_URL}} # Every request X-Api-Key: sk_live_YOUR_KEY
Missing or invalid keys return 401 — see
errors. The demo endpoint is the only keyless route.
Endpoints
All paths relative to the base URL. Every 200 ships ETag,
Cache-Control and RateLimit-* headers.
| Method | Path | Summary |
|---|---|---|
| GET | /refinery/latest Free+ | Latest value of every refinery metric for one area |
| GET | /refinery/{metric} Free+ | Latest value of a single refinery metric |
| GET | /refinery/{metric}/history Free+ | Paginated weekly history for a metric and area |
{metric}: utilization | gross-inputs | crude-inputs | capacity. Query area: us | padd1…padd5 (default us). Note: /refinery/latest returns all four metrics; /refinery/{metric} returns one. History: start/end (YYYY-MM-DD, keyset), limit 1–100.
Sample — 200 /refinery/latest
{"data":[{"metric":"capacity","area":"us","period":"2026-07-10","value":18015,"unit":"thousand barrels per calendar day","source":"EIA"},{"metric":"crude-inputs","area":"us","period":"2026-07-10","value":17123,"unit":"thousand barrels per day","source":"EIA"}],"meta":{"source":"U.S. Energy Information Administration","area":"us"}}
Errors, auth & limits
One uniform error contract everywhere:
{ "error": { "code", "message" } } with stable,
machine-readable codes — shared by every API on the platform.
| Status | Code | When |
|---|---|---|
| 401 | UNAUTHORIZED | Missing X-Api-Key header, or invalid/revoked key. |
| 400 | VALIDATION_ERROR | Bad query/path parameters. |
| 404 | METRIC_NOT_FOUND · NO_DATA · NOT_FOUND | Unknown value for the path parameter (the message lists the valid ones), no data for the requested range yet, or unknown route. |
| 429 | RATE_LIMITED | Per-minute limit of your plan exceeded — check Retry-After. |
| 429 | QUOTA_EXCEEDED | Monthly cap reached. Nothing is billed on top — resets on the 1st (UTC). |
| 502 | UPSTREAM_ERROR | The origin API was unreachable — retry shortly. |
Data provenance
The EIA Weekly Petroleum Status Report (EIA-800 series survey forms). Utilization is a percentage that can legitimately exceed 100 (the record is 112.5% in PADD 4); gross and crude inputs are in thousand barrels per day, and operable capacity in thousand barrels per calendar day. Weekly history: crude inputs since 1982, the rest since 1990, PADD detail since 2010. This product is not endorsed by or affiliated with the EIA.
Example
curl -H "X-Api-Key: sk_live_YOUR_KEY" \ https://api.synergicapis.com/refinery/latest
import requests
r = requests.get(
"https://api.synergicapis.com/refinery/latest",
headers={"X-Api-Key": "sk_live_YOUR_KEY"},
)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://api.synergicapis.com/refinery/latest", { headers: { "X-Api-Key": "sk_live_YOUR_KEY" }, }); const { data } = await res.json(); console.log(data);
Live demo
Real request against the production API — no key needed here (demo endpoint, 5 requests/minute).
Press the button to fetch the latest official figures.