A mandi-price request can succeed while the newest record is old. That is why a developer should check arrival_date before showing a rate as current. A healthy HTTP response proves the server answered; it does not prove that today's market reports have reached the database.

What happened to this API in September and October 2026?

This project's automated ingestion saved no new records between 25 September and 12 October 2026. Earlier runs saw upstream 502/504 errors; later GitHub-hosted runs timed out connecting to data.gov.in. The ingestion script had also been reporting success despite saving zero rows. We changed it to fail visibly when a state saves nothing. A manual run from India on 13 October saved 6,435 rows across the five supported states.

Those observations show that the hosted runner's path to the data source failed while a request from India worked that day. They do not prove why the network paths differed, and they do not show that data.gov.in stopped publishing new prices. The daily automation still needs a reliable route.

Read both dates in a response

curl -X GET "https://mandi-api.onrender.com/v1/prices?state=Maharashtra&commodity=Onion" \ -H "Accept: application/json"
  • arrival_date is the date attached to a market price record. Use it to label the quoted price.
  • fetched_at on a row is when this API stored that row. The response's latest_fetched_at is the newest fetch timestamp among returned rows.
  • A recent fetch does not make an older arrival_date a price from today. Different mandis can also report on different dates in the same response.

On 14 October 2026, a live Maharashtra request returned HTTP 200 with newest arrival_date 13 October. That is a dated observation, not a promise about what a later request will return.

A safe display rule

  1. Check the HTTP status and JSON success field. Handle network failure, 429 and server errors explicitly.
  2. Handle an empty data array as “no matching report,” never as a zero price.
  3. Find the newest valid arrival_date among the returned rows. Compare it with the current date in India and label its age.
  4. If it is too old for your use case, say “latest available price from [date]” or withhold the rate. Do not silently reuse it as today's value.
  5. Keep each market and variety separate. Missing reporting days in a history chart are gaps, not zero-price days.

The Python example implements a three-day cutoff that you can adapt. The service-status page checks API availability; your app must still inspect data age. For the provenance of these records, see Agmarknet versus e-NAM.