Skip to content

guard22/glovo-batumi-parser

Repository files navigation

Glovo Batumi Parser

Full-coverage parser for everything available on Glovo in Batumi, Georgia — restaurants, grocery stores, shops, pharmacies, and more.

Scrapes all products and menu items across 530+ venues, with built-in analytics: price comparison, deal finder, cheapest restaurant meals, and protein-optimized grocery basket builder.

What's Inside

  • 54,000+ items from all Glovo Batumi categories
  • 530 venues: McDonald's, KFC, Carrefour, Nikora, SPAR, Agrohub, local restaurants, shops, pharmacies
  • Pre-scraped dataset included (glovo_batumi_full.json) — use analytics immediately without scraping

Categories

Category Venues Items Examples
Restaurants & Food ~400 ~23,000 McDonald's, KFC, local cafes, sushi, pizza, shawarma
Grocery Stores ~50 ~17,000 Carrefour, Nikora, SPAR, Agrohub, Willmart
Shops ~60 ~7,000 Electronics, flowers, pet stores, fashion
Pharmacy & Beauty ~15 ~6,000 Pharmhouse, GPC, beauty shops

Quick Start

git clone https://github.com/guard22/glovo-batumi-parser.git
cd glovo-batumi-parser
pip install -r requirements.txt

The repo includes a pre-scraped dataset. You can start using analytics right away:

# Search across all 54k items
python main.py search --query "pizza"

# Find cheapest restaurant food
python main.py food --limit 30

# Compare prices across stores
python main.py compare --product "coca-cola"

# Show best deals (biggest discounts)
python main.py deals --limit 20

Commands

scrape — Collect Fresh Data

Re-scrape everything from Glovo Batumi. Takes ~15-20 minutes.

# Full scrape (all 530+ venues)
python main.py scrape --output glovo_batumi_products.json

# Scrape only restaurants
python main.py scrape --category food_1

# Scrape only grocery stores
python main.py scrape --category groceries_4

# Limit to first N stores
python main.py scrape --max-stores 10

search — Find Products

Search by keyword across all items.

python main.py search --query "chicken"
python main.py search --query "sushi" --category food_1
python main.py search --query "shampoo" --category pharmacy-beauty_3

food — Cheapest Restaurant Meals

Find the cheapest dishes across all restaurants, with restaurant price rankings.

python main.py food --limit 30
python main.py food --query "burger"
python main.py food --query "khinkali" --budget 20

compare — Price Comparison

Compare the same product across different stores and restaurants.

python main.py compare --product "milk"
python main.py compare --product "coca-cola"
python main.py compare --product "bread"

deals — Best Discounts

Show products with the biggest active discounts.

python main.py deals --limit 30

basket — Optimal Grocery Basket

Build an optimal grocery basket within a budget. Two modes:

  • protein — maximize protein per GEL spent
  • balanced — spread across food groups (meat, dairy, grains, legumes, nuts)
python main.py basket --budget 100 --mode protein
python main.py basket --budget 50 --mode balanced

analyze — Full Market Report

Generate a comprehensive analytics report: cheapest products, best deals, store comparison, optimal baskets.

python main.py analyze --budget 100

stores — List All Venues

# All venues
python main.py stores

# Only restaurants
python main.py stores --category food_1

# Only grocery stores
python main.py stores --category groceries_4

Category Codes

Code Category
food_1 Restaurants, cafes, fast food
groceries_4 Grocery stores, supermarkets
shops_22 Shops (electronics, flowers, etc.)
pharmacy-beauty_3 Pharmacy & beauty

How It Works

  1. Store Discovery — Scans all Glovo Batumi category pages + subcategory type filters to find every venue
  2. Product Extraction — For each store, fetches the SSR page to extract storeId/addressId and category deeplink slugs, then calls the Glovo v4 API in parallel (8 concurrent workers) to pull all products
  3. Normalization — Deduplicates by product ID, normalizes prices, extracts promo info
  4. Analytics — Keyword search, fuzzy price comparison, discount detection, nutrition-based basket optimization

Technical Details

  • Uses Glovo's internal v4 REST API (api.glovoapp.com) — no auth token required
  • Parallel category fetching with ThreadPoolExecutor (8 workers per store)
  • Full scrape of 530+ venues completes in ~15-20 minutes
  • Supports Georgian, English, and Russian product names
  • Protein estimation via keyword-based nutrition knowledge base (supports multilingual names)

Data Format

Each item in the JSON output:

{
  "id": "12345",
  "external_id": "67890",
  "name": "Coca-Cola 0.5L",
  "price": 2.50,
  "promo_price": null,
  "promo_type": null,
  "currency": "GEL",
  "display_price": "2.50 GEL",
  "image_url": "https://...",
  "category": "Drinks",
  "store_slug": "carrefour-bats",
  "store_name": "Carrefour",
  "glovo_category": "groceries_4"
}

Project Structure

glovo-batumi-parser/
  main.py              # CLI entry point
  glovo_client.py      # Scraper (store discovery + product extraction)
  analytics.py         # Analysis engine (search, compare, basket optimizer)
  requirements.txt     # Python dependencies
  glovo_batumi_full.json       # Pre-scraped full dataset (~27 MB)
  glovo_batumi_products.json   # Copy used as default CLI input

Requirements

  • Python 3.9+
  • requests
  • beautifulsoup4

License

MIT

About

Full Glovo Batumi parser — 54k+ products from 530 venues (restaurants, groceries, shops, pharmacies). Search, compare prices, find deals, optimize grocery baskets.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors