Skip to main content
Thirdwatchthirdwatch
Food delivery

Build India Food Delivery Coverage with Swiggy (2026)

Build comprehensive India food-delivery coverage from Swiggy using Thirdwatch. 100-city expansion + tier-2/3 pipelines + recipes.

Apr 28, 2026 · 5 min read · 1,220 words
See the scraper →

Thirdwatch's Swiggy Scraper makes India food-delivery coverage research a structured workflow — 100-city tier-1/2/3 expansion tracking, restaurant-density analysis, cuisine-diversity benchmarks, new-city detection. Built for India ecommerce expansion research, India F&B investment, food-delivery aggregator builders, and India retail-investment functions.

Why build India coverage with Swiggy

Swiggy is the deepest India food-delivery coverage source. According to Swiggy's 2024 IPO prospectus, the platform operates in 600+ cities with 50% tier-1 + 60%+ tier-2/3 market share — material gap-fill from urban-only platforms like Zomato. For India ecommerce + F&B research teams, Swiggy provides the canonical multi-tier India coverage signal.

The job-to-be-done is structured. An India F&B investment fund maps tier-2/3 expansion velocity for retail-thesis development. A India ecommerce expansion-strategy function studies cross-city dynamics for client expansion-planning. A India food-delivery aggregator builder ingests multi-city Swiggy data for marketplace seeding. A QSR (Quick Service Restaurant) chain plans India tier-2/3 expansion via Swiggy density signals. All reduce to multi-city queries + cross-tier benchmarking.

How does this compare to the alternatives?

Three options for India food-delivery coverage data:

Approach Cost per 100-city India coverage Reliability Setup time Maintenance
Crisil / RedSeer India F&B $20K-$100K/year Authoritative, lagged Days Annual contract
Manual city-research Free, time-intensive Slow Hours/city Daily manual work
Thirdwatch Swiggy Scraper Pay per result HTTP + lat/lng-based 5 minutes Thirdwatch tracks Swiggy

The Swiggy Scraper actor page gives you raw real-time multi-city Swiggy data at materially lower per-record cost.

How to build coverage in 4 steps

Step 1: Authenticate

export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"

Step 2: Pull tier-1/2/3 city batches quarterly

import os, requests, datetime, json, pathlib

ACTOR = "thirdwatch~swiggy-scraper"
TOKEN = os.environ["APIFY_TOKEN"]

INDIA_CITIES = [
    # Tier 1
    {"city": "Bangalore", "lat": 12.9716, "lng": 77.5946, "tier": 1},
    {"city": "Mumbai", "lat": 19.0760, "lng": 72.8777, "tier": 1},
    {"city": "Delhi", "lat": 28.6139, "lng": 77.2090, "tier": 1},
    {"city": "Hyderabad", "lat": 17.3850, "lng": 78.4867, "tier": 1},
    # Tier 2
    {"city": "Jaipur", "lat": 26.9124, "lng": 75.7873, "tier": 2},
    {"city": "Lucknow", "lat": 26.8467, "lng": 80.9462, "tier": 2},
    {"city": "Nagpur", "lat": 21.1458, "lng": 79.0882, "tier": 2},
    # Tier 3
    {"city": "Indore", "lat": 22.7196, "lng": 75.8577, "tier": 3},
    {"city": "Coimbatore", "lat": 11.0168, "lng": 76.9558, "tier": 3},
    {"city": "Kochi", "lat": 9.9312, "lng": 76.2673, "tier": 3},
]

resp = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
    params={"token": TOKEN},
    json={"locations": INDIA_CITIES, "maxResults": 200},
    timeout=3600,
)
records = resp.json()
ts = datetime.datetime.utcnow().strftime("%Y%m%d")
pathlib.Path(f"snapshots/swiggy-india-coverage-{ts}.json").write_text(json.dumps(records))
print(f"{ts}: {len(records)} restaurants across {len(INDIA_CITIES)} India cities")

10 cities × 200 = 2,000 records per snapshot.

Step 3: Compute per-tier density + diversity benchmarks

import pandas as pd

df = pd.DataFrame(records)
city_to_tier = {c["city"]: c["tier"] for c in INDIA_CITIES}
df["tier"] = df.city.map(city_to_tier)

tier_metrics = (
    df.groupby("tier")
    .agg(restaurant_count=("restaurant_id", "nunique"),
         cuisine_diversity=("cuisine", "nunique"),
         avg_rating=("rating", "mean"),
         chain_pct=("is_chain", "mean"))
    .reset_index()
)
print(tier_metrics)

# Per-city restaurant density (assuming 50sqkm coverage radius typical Swiggy zone)
per_city = (
    df.groupby("city")
    .agg(restaurant_count=("restaurant_id", "nunique"),
         density_per_sqkm=("restaurant_id", lambda x: x.nunique() / 50))
    .reset_index()
    .sort_values("restaurant_count", ascending=False)
)
print(per_city)

Step 4: Detect new-city launches + expansion velocity

import glob

snapshots = sorted(glob.glob("snapshots/swiggy-india-coverage-*.json"))
all_dfs = []
for s in snapshots:
    df = pd.DataFrame(json.loads(open(s).read()))
    df["snapshot_date"] = pd.to_datetime(s.split("-")[-1].split(".")[0])
    all_dfs.append(df)
combined = pd.concat(all_dfs, ignore_index=True)

city_velocity = (
    combined.groupby(["city", "snapshot_date"])
    .restaurant_id.nunique()
    .unstack(fill_value=0)
    .pct_change(axis=1)
    .iloc[:, -1]
    .sort_values(ascending=False)
)

rising = city_velocity[city_velocity >= 0.5]  # 50%+ restaurant growth quarter-over-quarter
print(f"{len(rising)} cities with 50%+ Swiggy restaurant-count growth (expansion-velocity signal)")
print(rising.head(10))

Sample output

{
  "restaurant_id": "abc12345",
  "name": "Truffles - Indiranagar",
  "city": "Bangalore",
  "tier": 1,
  "lat": 12.9784,
  "lng": 77.6408,
  "rating": 4.4,
  "cost_for_two": "₹600",
  "cuisine": "Continental, American",
  "is_chain": true,
  "delivery_time": "30-35 min",
  "url": "https://www.swiggy.com/restaurants/truffles-indiranagar"
}

Common pitfalls

Three things go wrong in India coverage pipelines. Lat/lng-zone-coverage variance — Swiggy assigns ~5km service-radius per restaurant; for accurate density research, segment query-radius before benchmarking. Tier-classification drift — India city-tiers shift as cities grow (Pune moved Tier-2 → Tier-1 in 2018); for accurate longitudinal research, use 2024 city-tier baseline. Chain vs local detection — chain-detection requires brand-name mapping (McDonald's, Domino's, etc.); maintain canonical chain-name list with 50-100 known India QSR chains.

Thirdwatch's actor uses HTTP + lat/lng queries with pay-per-result pricing. Pair Swiggy with Zomato (separate actor coming) for Tier-1 cross-platform coverage. A fourth subtle issue worth flagging: Swiggy's "Cloud Kitchen" partner-restaurants (Rebel Foods, Box8) appear as multiple-brand listings from one physical kitchen — for accurate physical-restaurant coverage, dedupe by lat/lng with 100m radius. A fifth pattern unique to India coverage: rural areas (population <100K) have minimal Swiggy presence — for accurate tier-3 research, focus on tier-3 cities with 100K+ population. A sixth and final pitfall: India festival cycles (Diwali, Onam, Durga Puja) drive 30-50% temporary order-volume spikes; for accurate base-rate coverage research, exclude festival windows from longitudinal analysis.

Operational best practices for production pipelines

Tier the cadence: Tier 1 (active expansion-research watchlist, monthly), Tier 2 (broader India coverage, quarterly), Tier 3 (long-tail tier-3 cities, semi-annually). 60-80% cost reduction with negligible signal loss when watchlist is properly tiered.

Snapshot raw payloads with gzip compression. Re-derive density + diversity metrics from raw JSON as your tier-classification logic evolves. Cross-snapshot diff alerts on city-restaurant-count velocity catch expansion-cycle inflection points.

Schema validation. Daily validation suite asserting expected core fields with non-null rates above 80% (required) and 50% (optional). Swiggy schema occasionally changes during platform UI revisions — catch drift early. A seventh pattern at scale: cross-snapshot diff alerts for new-city detection (cities with 0 → 50+ restaurants in 7-day window) catch India expansion-velocity signals before they appear in Swiggy investor calls. An eighth pattern for cost-controlled teams: implement an incremental-diff pipeline that only re-processes records whose hash changed since the previous snapshot. For watchlists where 90%+ of records are unchanged between snapshots, hash-comparison-driven incremental processing reduces downstream-compute by 80-90% while preserving full data fidelity.

A ninth pattern unique to research-grade data work: schema validation should run continuously, not just at pipeline build-time. Run a daily validation suite that asserts each scraper returns the expected core fields with non-null rates above 80% (for required fields) and 50% (for optional). Alert on schema breakage same-day so consumers don't degrade silently.

A tenth pattern around alert-fatigue management: tune alert thresholds quarterly based on actual analyst-action rates. If analysts ignore 80%+ of alerts at a given threshold, raise the threshold. If they manually surface signals the alerts missed, lower the threshold.

An eleventh and final pattern at production scale: cross-snapshot diff alerts. Beyond detecting individual changes, build alerts on cross-snapshot field-level diffs — name changes, category re-classifications, status changes. These structural changes precede or follow material events and are leading indicators of organization-level disruption. Persist a structured-diff log alongside aggregate snapshots: for each entity, persist (field, old_value, new_value) tuples per scrape. Surface high-leverage diffs to human reviewers; low-leverage diffs stay in the audit log.

A twelfth pattern: cost attribution per consumer. Tag every API call with a downstream-consumer identifier (team, product, feature) so you can attribute compute spend back to the workflow that drove it. When a downstream consumer's spend exceeds projected budget, you can have a precise conversation with them about the queries driving cost rather than a vague "scraping is expensive" debate.

Related use cases

Frequently asked questions

Why build India food-delivery coverage with Swiggy?

Swiggy operates in 600+ Indian cities — the deepest tier-2/3 coverage in India food-delivery. According to Swiggy's 2024 IPO prospectus, the platform processes 100M+ monthly orders with ~50% market share in tier-1 metros and 60%+ in tier-2/3 cities. For India ecommerce expansion research, India F&B investment, and India food-delivery aggregator products, Swiggy provides the canonical India coverage signal.

How is India food-delivery tier-segmented?

Three tiers: (1) Tier-1 metros (Bangalore, Mumbai, Delhi NCR, Hyderabad, Chennai, Kolkata, Pune, Ahmedabad — 8 cities, 60% of order volume); (2) Tier-2 cities (population 1-5M: Jaipur, Lucknow, Kanpur, Nagpur, etc. — 50 cities, 25% of order volume); (3) Tier-3 cities (population <1M: Indore, Coimbatore, Kochi, etc. — 600+ cities, 15% of order volume). Coverage strategy differs per tier.

How fresh do coverage snapshots need to be?

Quarterly cadence captures meaningful India food-delivery expansion shifts. Monthly cadence captures faster-moving tier-2/3 markets (new-city launches, restaurant onboarding waves). For active expansion-research, weekly cadence on top-50 tier-2/3 cities. India food-delivery coverage moves materially faster than mature US/EU markets — quarterly cadence catches most coverage-velocity signals.

What restaurant-density patterns matter?

Three patterns: (1) restaurant density per square km (tier-1 metros 50-150/sqkm, tier-2 20-50/sqkm, tier-3 5-15/sqkm); (2) chain vs local mix (tier-1 30-40% chain, tier-2 20-30% chain, tier-3 10-20% chain); (3) cuisine diversity (tier-1 30+ distinct cuisines, tier-3 10-15 cuisines). Combined density patterns reveal market-maturity stage per city.

Can I detect new-city Swiggy launches via coverage data?

Yes — and new-city launches are leading-indicator for India F&B expansion. New Swiggy city typically shows: (1) restaurant count <50 in week-1; (2) growing 50-100/week through month-3; (3) plateau at 200-500 by month-6. Cross-snapshot tracking catches new-city onboarding within 7 days of launch.

How does this compare to Crisil + RedSeer India F&B research?

Crisil + RedSeer bundle India F&B research at $20K-$100K/year, lagged 30-60 days. Swiggy IPO prospectus + investor calls: quarterly only, aggregated. The actor delivers raw real-time per-city Swiggy data on pay-per-result pricing. For active India expansion + investment research, real-time per-city data is materially more actionable than lagged consultancy reports.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.