foodpantries APIfoodpantries.org ↗
Access food pantry listings across all US states via 7 endpoints. Search by address, browse by state, city, or county, and retrieve full pantry details.
What is the foodpantries API?
The foodpantries.org API provides access to food pantry listings across the United States through 7 endpoints covering state, city, county, and individual pantry data. The get_pantry_details endpoint returns a pantry's name, address, phone, email, website, operating hours, description, and a Q&A section. You can also search geographically with search_pantries_by_address or browse the directory hierarchy from state down to individual listing.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/e357eb17-8a49-4462-b671-9274c6c098dd/get_states' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace foodpantries-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Food Pantries SDK — find pantries by state, city, county, and search."""
from parse_apis.food_pantries_api import FoodPantries, StateAbbr, PantryNotFound
client = FoodPantries()
# List all US states with food pantry coverage
for state in client.states.list(limit=5):
print(state.name, state.slug)
# Drill into California's cities
ca = client.state(slug="california")
city = ca.cities(limit=1).first()
if city:
print(city.name, city.count, city.state_abbr)
# Get pantries in that city
for pantry in city.pantries(state_abbr=StateAbbr.CA, limit=3):
print(pantry.name, pantry.telephone)
# Search pantries by location
result = client.pantrysummaries.search(city="Houston", state="TX", limit=1).first()
if result:
# Drill into full pantry details
try:
detail = result.details()
print(detail.name, detail.phone, detail.hours)
except PantryNotFound as exc:
print(f"Pantry not found: {exc.pantry_slug}")
# Browse by county
for pantry in client.pantrysummaries.by_county(state_abbr=StateAbbr.CA, county_slug="orange", limit=3):
print(pantry.name, pantry.detail_url)
# Check latest additions
latest = client.latestadditions.list(limit=3).first()
if latest:
print(latest.name, latest.slug)
print("exercised: states.list / state.cities / city.pantries / pantrysummaries.search / details / by_county / latestadditions.list")
Returns all US states that have food pantry listings. Each state includes its display name, URL slug for further drilling, and full URL. Use state slugs with get_pantries_by_state to list cities within a state.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer count of states",
"states": "array of state objects with name, slug, and url"
},
"sample": {
"data": {
"total": 51,
"states": [
{
"url": "https://www.foodpantries.org/st/california",
"name": "California",
"slug": "california"
},
{
"url": "https://www.foodpantries.org/st/texas",
"name": "Texas",
"slug": "texas"
}
]
},
"status": "success"
}
}About the foodpantries API
Directory Browsing
The API exposes a three-level geographic hierarchy. get_states returns all US states that have listings, including each state's name, slug, and url. From a state slug you call get_pantries_by_city with a state_abbr and city_slug to get every pantry in that city, each with name, address, telephone, slug, and detail_url. The parallel endpoint get_pantries_by_county accepts a state_abbr and county_slug (without the _county suffix) and returns the same pantry-level fields organized by county.
Pantry Detail
get_pantry_details takes a pantry_slug from any listing result and returns the full record: structured address with separate street, city, state, and zip fields; phone; email; website; hours; description; and a qa array of question-and-answer pairs that capture additional service details published on the pantry's listing page. Fields like email, website, and hours return an empty string when the pantry has not provided that information.
Address Search and Latest Additions
search_pantries_by_address accepts any combination of address, city, and state (at least one required) and returns a ranked list of matching pantries with name, slug, and detail_url. Results are shallow — use the slug with get_pantry_details to retrieve full contact and hours information. get_latest_additions requires no inputs and returns the most recently added listings from the homepage, each with name, detail_url, slug, and image_url.
The foodpantries API is a managed, monitored endpoint for foodpantries.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when foodpantries.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official foodpantries.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a food assistance locator app that resolves a user's street address to nearby pantries using
search_pantries_by_address. - Populate a county-level resource map by iterating
get_pantries_by_countyfor each county in a state. - Display pantry hours and contact info in a social services case management platform via
get_pantry_details. - Track newly listed pantries by polling
get_latest_additionsand pushing updates to a community newsletter. - Generate a city-by-city coverage report by pulling
get_pantries_by_stateand inspecting thecountfield per city. - Feed a nonprofit CRM with verified addresses, phone numbers, and websites pulled from pantry detail records.
- Cross-reference pantry Q&A data from
get_pantry_detailsto surface eligibility requirements for specific client populations.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does foodpantries.org offer an official developer API?+
What does `get_pantry_details` return beyond a basic address?+
get_pantry_details returns the pantry's structured address (with separate street, city, state, and zip fields), phone, email, website, hours, a free-text description, and a qa array of question-and-answer pairs that capture additional service or eligibility details. Fields with no data are returned as empty strings rather than null.Are pantry operating hours and eligibility requirements always available?+
hours and email fields return an empty string when the source listing omits that information, and the qa array may be empty for pantries with minimal published details. Coverage depends on what each pantry has submitted to foodpantries.org.Does the API support filtering pantries by service type, language, or dietary restrictions?+
Does `search_pantries_by_address` return full pantry details in its response?+
name, slug, and detail_url per pantry. To retrieve address, phone, hours, and other fields you need to pass each result's slug to get_pantry_details. You can fork this API on Parse and revise it to chain that lookup automatically if you need enriched search results in a single call.