Octomind
Same model as opencode, same endpoint, same prices — octomind solved 24/25 to its 19/25, at half the cost. Open-source agent runtime: one binary, any model, runs unattended in CI. Apache 2.0.
Free, keyless REST API for daily petrol and diesel prices in Delhi, Mumbai, Chennai and Kolkata since June 2017, from the PPAC price table.
Developer toolsJavaScript · CSSGitHub @shrinivas-snOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
India petroleum API from PPAC data: four-metro daily fuel prices and monthly statistics
Taken from the repository README
Loading the full README.
Read the full README ↗A free, keyless REST API for the daily petrol and diesel retail prices in Delhi, Mumbai, Chennai and Kolkata, one row per day since 16 June 2017. The figures come from the table PPAC publishes for the four metro cities.
Source: Petroleum Planning & Analysis Cell (PPAC), Ministry of Petroleum and Natural Gas, Government of India. PPAC's terms allow reuse free of charge if the material is reproduced accurately and the source is prominently acknowledged: https://ppac.gov.in/terms-conditions. Every API response carries the attribution in meta.attribution. This project is not run by PPAC or by any oil marketing company.
| Route | Returns |
|---|---|
GET /v1/prices/latest | The newest day, all four cities, petrol and diesel |
GET /v1/prices?from=&to=[&city=][&fuel=] | One row per day in the range (at most 3,660 days) |
GET /v1/prices/changes[?from=&to=&city=&fuel=] | Only the days a price moved, with the price before and after |
GET /v1/cities | The four city slugs |
GET /v1/meta | Source file URL and SHA-256, download time, first and last date, days_behind |
GET /health | API name, coverage and endpoint list |
Dates are YYYY-MM-DD. Errors use { "success": false, "error": { "code", "message" } }. The rate limit is 100 requests per 15 minutes per IP address, counted separately on each server instance. The portal's Docs page lists every parameter and error code with real responses.
The API serves stored JSON and never calls PPAC when a request arrives.
ingest/ downloads PPAC's PDF, reads its text with pdftotext -raw, and refuses the data if a day is missing or repeated, an earlier price changed without an approved restatement, or a price looks wrong (outside 20 to 500 rupees, or a move of more than 20 from the day before). docs/GO-LIVE.md says what to do when it refuses..github/workflows/fuel-ingest.yml runs that every three hours and commits the new rows to data/fuel/ (daily.json, changes.json, meta.json). It retries the PPAC pages and the download, treats an older PPAC file as a no-op, and keeps one rolling "ingest failed" issue.backend/ is an Express 5 app. It starts from the data/fuel/ files bundled with it, then fetches the newest files from this repository's raw URL at most once per DATA_TTL_SECONDS, validates them, and swaps them in only if they pass. On any failure it keeps the last good data and says why in /v1/meta (data_source, checked_at, refresh_error). api/index.js exposes it as the Vercel function.frontend/ is a React and Vite portal (home, playground, docs, three guides, status), prerendered to static HTML with a sitemap. The prerendered page carries the figures from the build; in the browser every figure, the chart and the playground come from the API, counted back from the newest day it reports. If the API cannot be reached, the page keeps the build figures and says so; a banner on every page appears when the newest price is more than two days old.All optional; set them as environment variables on the server.
| Variable | Default | Effect |
|---|---|---|
DATA_REMOTE | on | off serves only the data bundled with the deploy (local runs and tests) |
DATA_BASE_URL | this repository's main branch, data/fuel on raw.githubusercontent.com | Where the newest data files are fetched from; must be https |
DATA_TTL_SECONDS | 600 | Least time between checks for newer data on one server instance (values under 30 are ignored) |
PORT | 3000 | Port for npm start |
SITE_URL | Vercel's production host | Canonical origin for the sitemap and canonical tags; without one the build emits none |
Node 22 or newer.
npm install
npm start # API on the port in PORT, default 3000
cd frontend && npm install && npm run build # portal into frontend/dist, served by the same app
npm test: the ingest and backend tests.npm run test:frontend: the frontend tests, including a check that every number the guides quote matches the data.npm run verify: all of the above, the production build, the built-site tests and the SEO check. .github/workflows/ci.yml runs it on every push to main and every pull request.The fuel module is live at https://india-petroleum-api.vercel.app (deployed from the local source with the Vercel CLI). New data reaches it without a deploy, because the API reads the repository. The Vercel project is not yet linked to this GitHub repository, so a code change needs vercel deploy --prod; what is left, and who does it, is in docs/GO-LIVE.md. Monthly petroleum statistics (consumption, production and trade from data.gov.in) are not built. docs/DECISIONS.md records why the code looks the way it does, and docs/DATA-NOTES.md records how PPAC's file is read and checked.