Overview

Catalog, mappings & price intelligence.

Access required

Contact an administrator if you need access to this area.

CATALOG & MAPPING COVERAGE

Your catalog, across six platforms

Track approved mappings and FirstClub reviews in one place.

Open live compare β†’

Platform coverage

Mapped = approved mapping Β· FC verified = reviewed by FirstClub. Coverage does not indicate live API availability.

Category coverage

Distinct catalog products. Each platform shows mapped / FC verified counts.

Super-categoryCategoryTotalBlinkitSwiggyNowZeptoBigBasketMinutesDetails

product_id product_name brand uom mrp super_category category sub_category images

product_id platform platform_id platform_xid fc_verified fc_verifiedby fc_verifiedat View
Live prices are loaded through the QuickCompare item API (server proxy). Select Bangalore (560103) or Hyderabad (500081) to match your crawl locations.

Pick filters, then Start verification for a random mapped SKU. The same button becomes Next item after the first load. Changing filters resets the button. Use Verify mapping on any platform to set fc_verified.

Pick filters, then Start verification for a random SKU from the entire FirstClub catalog (mapped or not). The same button becomes Next item after the first load. Verify mapping here only stamps the existing verifiedby / verifiedat columns β€” the fc_verified flag is left untouched.

Club house Blinkit ETA Blinkit open Blinkit store Swiggy ETA Swiggy open Swiggy store

Rows from public.firstclub_clubhouses (ordered by id).

id name location_id clubhouse_id latitude longitude created_at

Crons public.fc_crawl_run

Paginated from the database (newest first). Tap a cron_id for run metadata and price observations (same columns as export cron.csv).

cron_id Scheduled (IST) Started (IST) Duration Status Locations Manifest summary

Daily charges (IST)

ETA stores = COUNT(*) from public.firstclub_clubhouses (shared across Blinkit, Swiggy, and Zepto).

Date (IST) Cron runs Credit rows Crawl β‚Ή Mapping rows Mapping β‚Ή ETA stores Blinkit ETA β‚Ή Swiggy ETA β‚Ή Zepto ETA β‚Ή Total β‚Ή

Monthly charges (IST)

Calendar months from May 2026 through today. Totals include every IST day in each month (not limited by the daily window above).

Month (IST) IST days Cron runs Credit rows Crawl β‚Ή Mapping rows Mapping β‚Ή Blinkit ETA β‚Ή Swiggy ETA β‚Ή Zepto ETA β‚Ή Total β‚Ή

Pricing (aligned)

Recent crons β€” credit rows per run

Crawl β‚Ή is charged only when status is completed; running/failed runs show β‚Ή0.

cron_id Started (IST) Status Credit rows Crawl β‚Ή Manifest summary

Create user

A welcome email with sign-in details is sent automatically.

Tab access (non-admin)

Ignored if Admin is checked.

Users

Email Admin Active Tabs Last email

FirstClub API Key

Use this API Key to authenticate programmatic requests to QuickCompare detailed ETA and raincheck endpoints without browser session cookies. Pass the key via the api-token GET parameter.

Loading…

Exposed API Endpoints

Platform API Endpoint Example URL (Click to test)

API Documentation

Authentication

All public API calls must include your API key via the api-token query parameter. No request body or special headers are needed.

GET https://api.quickcompare.in/qc?type=eta-detailed&platform=BlinkIt&api-token=YOUR_API_KEY
GET ?type=eta-detailed

Returns the latest ETA snapshot for every FirstClub clubhouse location, joined on exact latitude/longitude. One row per (clubhouse, platform) pair.

Query Parameters

ParameterTypeRequiredDescription
typestringβœ… YesMust be eta-detailed
api-tokenstringβœ… YesYour API key
platformstring❌ NoBlinkIt or Swiggy. Omit to return all platforms.

Response Shape

{
  "platform": "BlinkIt",          // requested platform (or "ALL")
  "rows": [
    {
      "name":               "HSR Layout",     // clubhouse name
      "location_id":        "loc_001",        // internal location identifier
      "platform":           "BlinkIt",
      "lat":                12.9224,          // latitude
      "lon":                77.6779,          // longitude
      "city":               "Bengaluru",
      "pincode":            "560102",
      "eta":                10,               // raw ETA value from platform
      "eta_minutes":        10,               // numeric minutes (parsed)
      "open":               true,             // store open status (boolean)
      "store_id":           "42",             // primary store / dark store ID
      "store_ids":          null,             // additional store IDs (array or null)
      "last_checked":       "2026-05-14T12:00:00Z",  // ISO-8601 UTC timestamp

      // BlinkIt-only fields (null for Swiggy):
      "surge_applicable":   false,
      "surge_amount":       0,
      "status_code":        "AVAILABLE",
      "store_status":       "OPEN",
      "distance_meters":    1200,
      "operational_start":  600,              // minutes from midnight
      "operational_end":    1380,

      // Swiggy-only fields (null for BlinkIt):
      "serviceability_status": null,
      "serviceability_type":   null,
      "stress_message":        null
    }
    // … one object per clubhouse location
  ]
}
GET ?type=eta-detailed-history

Returns a time-series history of ETA readings for a single (platform, lat, lon) coordinate, ordered oldest-first. Ideal for plotting trends over time.

Query Parameters

ParameterTypeRequiredDescription
typestringβœ… YesMust be eta-detailed-history
api-tokenstringβœ… YesYour API key
platformstringβœ… YesBlinkIt or Swiggy
latnumberβœ… YesLatitude of the clubhouse (e.g. 12.92240514)
lonnumberβœ… YesLongitude of the clubhouse (e.g. 77.67790149)
daysinteger❌ NoLookback window in days. Allowed: 1, 3, 7 (default), 15, 30.

Response Shape

{
  "platform": "BlinkIt",
  "lat": 12.92240514,
  "lon": 77.67790149,
  "days": 7,                       // window used
  "limit": 5000,                   // max rows returned
  "points": [
    {
      "created_at":       "2026-05-08T04:00:00Z",   // ISO-8601 UTC timestamp
      "open":             true,
      "eta_minutes":      9,                         // numeric minutes (null if unparseable)

      // BlinkIt-only (null for Swiggy):
      "surge_applicable": false,
      "surge_amount":     0,
      "status_code":      "AVAILABLE",
      "store_status":     "OPEN",

      // Swiggy-only (null for BlinkIt):
      "serviceability_status": null,
      "serviceability_type":   null,
      "stress_message":        null
    }
    // … one object per crawl interval, oldest first
  ]
}

⚠️ Returns {"error": "platform, lat, lon are required"} (HTTP 400) if any required parameter is missing or lat/lon are not valid numbers.

GET ?type=raincheck

Returns a clubhouse-centric snapshot of rain, surge, open/closed status, and ETA across competitors. Same underlying data as eta-detailed, grouped and normalized per location.

Query Parameters

ParameterTypeRequiredDescription
typestringβœ… YesMust be raincheck
api-tokenstringβœ… YesYour API key
platformsstring❌ NoComma-separated list, e.g. BlinkIt,Swiggy,Zepto. Default: BlinkIt,Swiggy,Zepto if omitted.
platformstring❌ NoAlias for platforms (single value or comma-separated).
storeidstring❌ NoFirstClub clubhouse location_id (e.g. LOCID25040900213). Comma-separated for multiple. Aliases: store_id, location_id, loc_id.
clubhouse_idstring❌ NoFirstClub clubhouse_id from public.firstclub_clubhouses. Comma-separated for multiple. Aliases: clubhouse_ids, clubhouseId. Can be combined with storeid (both must match).

Example calls

GET https://api.quickcompare.in/qc?type=raincheck&api-token=YOUR_API_KEY GET https://api.quickcompare.in/qc?type=raincheck&platforms=BlinkIt,Swiggy&api-token=YOUR_API_KEY GET https://api.quickcompare.in/qc?type=raincheck&storeid=LOCID25040900213&api-token=YOUR_API_KEY GET https://api.quickcompare.in/qc?type=raincheck&clubhouse_id=YOUR_CLUBHOUSE_ID&api-token=YOUR_API_KEY

Response Shape

{
  "platforms": ["BlinkIt", "Swiggy", "Zepto"],
  "clubhouse_id": "YOUR_CLUBHOUSE_ID",
  "clubhouse_ids": ["YOUR_CLUBHOUSE_ID"],
  "locations": [
    {
      "name": "HSR Layout",
      "id": "LOCID25080507713",
      "clubhouse_id": "YOUR_CLUBHOUSE_ID",
      "lat": 12.9224,
      "lon": 77.6779,
      "competitors": [
        {
          "name": "BlinkIt",
          "id": "42",
          "lat": 12.9224,
          "lon": 77.6779,
          "rain": true,
          "surgefee": 10,
          "open": true,
          "storeStatus": "High Demand",
          "lastUpdated": "2026-05-14T17:30:00+05:30",
          "etaMinutes": 10
        },
        {
          "name": "Swiggy",
          "id": "1387903",
          "lat": 12.9224,
          "lon": 77.6779,
          "rain": false,
          "surgefee": null,
          "open": true,
          "storeStatus": "Normal",
          "lastUpdated": "2026-05-14T17:30:00+05:30",
          "etaMinutes": 12
        }
      ]
    }
  ]
}

Each location has id (FirstClub location_id, e.g. LOCID25040900213) and clubhouse_id from public.firstclub_clubhouses. When filtered by storeid or clubhouse_id, the response echoes storeid/storeids or clubhouse_id/clubhouse_ids at the top level. Unknown filters return {"error": "unknown storeid", ...} or {"error": "unknown clubhouse_id", ...}. Competitor fields use camelCase: storeStatus, lastUpdated, etaMinutes. storeStatus is one of Normal, High Demand, or Temp Closed. lastUpdated is ISO-8601 in IST (Asia/Kolkata, offset +05:30). rain is derived from BlinkIt statusCode (rain disruption), Swiggy stress/serviceability text, or Zepto raining flag.

Edit user

Tab access

Create clubhouse

location_id must start with LOCID. Coordinates are stored as decimals (WGS84).

Club house

location_id

latitude

longitude

Crawl run

Category details

ETA detail

Delete mapping?

This permanently removes one row from public.fcmapping. Quick Compare and crawls will no longer use this platform link for the product until a new mapping is added.

Edit platform mapping

FirstClub

BlinkIt

Platform

Search on Google