ProduceIQ APIproduceiq.com ↗
Access live and historical produce commodity prices from ProduceIQ. 39 commodities, weekly updates, and data back to 2005 via 3 endpoints.
What is the ProduceIQ API?
The ProduceIQ API exposes current and historical wholesale produce prices across 39 commodities through 3 endpoints. get_current_prices returns the latest price per pound, weekly rate of change, and update timestamp for every tracked item. get_commodity_history drills into per-commodity weekly price records going back to 2005, and get_industry_index returns a single weighted average price index across the full commodity set.
curl -X GET 'https://api.parse.bot/scraper/3e41a1c7-b374-4d5b-8ee5-21fd64fcd470/get_current_prices?category=Fruit%3A+Apples+%26+Pears' \ -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 produceiq-com-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: ProduceIQ SDK — monitor produce prices and historical trends."""
from parse_apis.produceiq_produce_price_index_api import (
ProduceIQ, Category, CommodityNotFound
)
client = ProduceIQ()
# List citrus commodities using the Category enum
for item in client.commoditysummaries.list(category=Category.CITRUS, limit=5):
print(item.commodity, item.current_price_per_lb, item.rate_of_change_pct)
# Drill into a commodity's full price history via constructible shortcut
summary = client.commoditysummary(commodity="avocados")
detail = summary.details(year="2026", limit=5)
print(detail.commodity, detail.current_price_per_lb, detail.total_records)
for rec in detail.price_history:
print(f" Week {rec.week}: ${rec.price_per_lb}/lb")
# Direct fetch of commodity detail with error handling
try:
potato = client.commodities.get(commodity="potatoes")
print(potato.category, potato.commodity, potato.last_update)
except CommodityNotFound as exc:
print(f"Not found: {exc.commodity}")
# Get the industry-wide weighted price index
index = client.industryindexes.get(year="2026", limit=3)
print(f"Available years: {len(index.available_years)}, records: {index.total_records}")
for price in index.prices:
print(f" {price.year} W{price.week}: ${price.price_per_lb}/lb")
print("exercised: commoditysummaries.list / commoditysummary.details / commodities.get / industryindexes.get")
Get the latest prices for all produce commodities. Returns current price per pound, weekly rate of change, and last update timestamp for each commodity. Optionally filter by category or commodity name (both case-insensitive partial match). Returns all 39 commodities when no filters applied.
| Param | Type | Description |
|---|---|---|
| category | string | Filter by category name (case-insensitive partial match). Accepts full category names or partial strings. |
| commodity | string | Filter by commodity name (case-insensitive partial match). Examples: 'avocados', 'strawberries', 'potatoes', 'limes'. |
{
"type": "object",
"fields": {
"total": "integer count of commodities returned",
"commodities": "array of objects with category, commodity, current_price_per_lb, rate_of_change_pct, week, year, last_update, is_enabled"
},
"sample": {
"data": {
"total": 39,
"commodities": [
{
"week": 23,
"year": 2026,
"category": "Fruit: Apples & Pears",
"commodity": "Pears",
"is_enabled": true,
"last_update": "2026-06-05T00:00:00Z",
"rate_of_change_pct": 1.16,
"current_price_per_lb": 0.87
}
]
},
"status": "success"
}
}About the ProduceIQ API
What the API Covers
ProduceIQ tracks 39 produce commodities organized into categories including citrus, berries, tomatoes, melons, and other fruits and vegetables. Prices are expressed in dollars per pound and updated on a weekly basis. Each commodity record includes current_price_per_lb, rate_of_change_pct, the ISO last_update timestamp, week, year, and a boolean is_enabled flag. The get_current_prices endpoint accepts optional category and commodity parameters for case-insensitive partial filtering, so a query for 'citrus' returns all citrus commodities without needing exact names.
Historical Price Data
get_commodity_history accepts a required commodity parameter and optional year and limit parameters. It returns a price_history array of objects keyed by year and week, alongside total_records, current_price_per_lb, and rate_of_change_pct. Historical coverage runs from 2005 to the present, giving over 1,000 weekly data points per commodity for long-running items. If the commodity string doesn't match any known entry, the endpoint returns a stale_input error rather than an empty result.
Industry-Level Index
get_industry_index returns the ProduceIQ Produce Price Index — a single weighted average price across all 39 commodities — as a time series. The response includes a prices array of {year, week, price_per_lb} objects, total_records, and an available_years array listing every year with data from 2005 onward. The year and limit parameters let you scope results to a single calendar year or cap the number of records returned.
The ProduceIQ API is a managed, monitored endpoint for produceiq.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when produceiq.com 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 produceiq.com 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 live produce price dashboard displaying current $/lb and week-over-week change for each commodity using
get_current_prices. - Detect price volatility alerts by monitoring
rate_of_change_pctacross all commodities and flagging movements above a threshold. - Generate multi-year trend charts for specific commodities like avocados or strawberries using
get_commodity_historywith a year filter. - Benchmark a single commodity's price against the broader market by comparing its history to the
get_industry_indextime series. - Feed wholesale price data into a procurement cost model that recalculates margins weekly as new
current_price_per_lbvalues arrive. - Power an agricultural research tool that compares seasonal price patterns across categories like berries and melons over multiple years.
- Automate category-level price reporting by filtering
get_current_pricesbycategoryto generate weekly summaries for each produce group.
| 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 ProduceIQ offer an official developer API?+
How does `get_commodity_history` behave when a commodity name isn't recognized?+
commodity parameter. If no match is found — for example, a misspelled name or one not in the 39-commodity set — the response returns a stale_input error rather than an empty array, so your integration should handle that error state explicitly.Does the API cover retail grocery prices or only wholesale commodity prices?+
Is price data available at daily or sub-weekly granularity?+
get_commodity_history and get_industry_index return data keyed by year and week, not by individual date. Daily price granularity is not currently available through these endpoints. You can fork the API on Parse and revise it to add finer-grained data if a suitable source is identified.