Base URL
All requests go to:/v1/search).
Authentication
Every request must include your API key in theX-API-Key header.
401 Unauthorized. If the key is valid but does not have permission for the requested operation, it returns 403 Forbidden.
Response envelope
List endpoints (/v1/farms, /v1/search) wrap results in a consistent envelope:
Array of farm or search result objects.
Convenience links for the current and next page.
links.next is omitted when has_more is false./v1/farms/:id, /v1/stats) use a simpler envelope with no meta or links:
Rate limit headers
Every response includes rate limit information:| Header | Description |
|---|---|
X-RateLimit-Limit | Total requests allowed in the current window for your plan. |
X-RateLimit-Remaining | Requests remaining in the current window. |
X-RateLimit-Remaining reaches 0, subsequent requests return 429 Too Many Requests. Use these headers proactively to pace your request rate and avoid hitting the limit.
Available endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/search | Geo-radius farm search by latitude and longitude. |
GET | /v1/food | Product-first search — find farms that carry a specific product. |
GET | /v1/farms | List and filter farms by state, products, certifications, and more. |
GET | /v1/farms/:id | Retrieve a single farm’s full profile. |
GET | /v1/farms/:id/products | Product listings for a specific farm. |
GET | /v1/farms/:id/hours | Operating hours for a specific farm (paid tier). |
GET | /v1/availability | Check if a product is in stock at a farm. |
GET | /v1/stats | Platform-level counts, coverage, and top product data. |
GET | /v1/market/landscape | Raw market data: farm counts, quality distribution, product/cert/practice breakdowns. |
GET | /v1/market/prices | Compare pricing for a product across farms in an area. |
GET | /v1/market/competitors | Find farms with overlapping products near a specific farm. |
GET | /v1/market/differentiators | What makes a farm unique vs its neighbors. |
GET | /v1/market/delivery | Delivery and pickup stats for farms near a location. |
Tier differences
Your API key is scoped to either the free or paid tier. The tier controls which fields are returned on farm objects.Free tier fields
Free tier responses include the core discovery fields:id, name, city, state, lat, lng, place_type, products, categories
For search results, distance_mi is also included.
Paid tier fields
Paid tier responses include all free fields plus:address, zip, phone, website, email, description, story, farmer_name, tagline, certifications, practices, delivery_options, images, image_url, farmer_photo_url, google_rating, google_review_count, quality_tier, quality_score, quality_tier_label, verification_status, hours_json, payment_methods, price_range, founded_year
In addition, GET /v1/farms/:id on the paid tier includes a nested product_listings array with individual product entries (id, name, price, unit, category, in_stock).
If a field appears as
null rather than missing from the response, it means the farm exists in the dataset but that particular attribute has not been collected yet.