{"id":50405620,"url":"https://github.com/nikuscs/continentes","last_synced_at":"2026-05-31T01:30:26.179Z","repository":{"id":357347812,"uuid":"1188929360","full_name":"nikuscs/continentes","owner":"nikuscs","description":"Fast CLI for browsing Continente online supermarket products — LLM-ready, works with Claude Code, Codex, OpenClaw, and AI agents. Search, prices, nutrition, categories, stores. Product ordering planned.","archived":false,"fork":false,"pushed_at":"2026-05-12T10:38:10.000Z","size":275,"stargazers_count":4,"open_issues_count":9,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T12:32:24.144Z","etag":null,"topics":["cli","continente","grocery","portugal","rust","sfcc","supermarket"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikuscs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-22T19:16:05.000Z","updated_at":"2026-05-12T10:38:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nikuscs/continentes","commit_stats":null,"previous_names":["nikuscs/continentes"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nikuscs/continentes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikuscs%2Fcontinentes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikuscs%2Fcontinentes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikuscs%2Fcontinentes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikuscs%2Fcontinentes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikuscs","download_url":"https://codeload.github.com/nikuscs/continentes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikuscs%2Fcontinentes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33716338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","continente","grocery","portugal","rust","sfcc","supermarket"],"created_at":"2026-05-31T01:30:21.945Z","updated_at":"2026-05-31T01:30:26.159Z","avatar_url":"https://github.com/nikuscs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🛒 cnt\n\n[![CI](https://github.com/nikuscs/continentes/actions/workflows/ci.yml/badge.svg)](https://github.com/nikuscs/continentes/actions/workflows/ci.yml)\n[![Release](https://github.com/nikuscs/continentes/actions/workflows/release.yml/badge.svg)](https://github.com/nikuscs/continentes/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n**Fast CLI for browsing [Continente online](https://www.continente.pt) supermarket products, optimized for LLM consumption. Works as a skill for [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Claude.ai](https://claude.ai), [OpenAI Codex](https://openai.com/index/openai-codex/), [OpenClaw](https://github.com/openclaw/openclaw), and any AI agent. Search products, compare prices, inspect nutritional info, browse categories, and find nearby stores — with product ordering planned for the future.**\n\n\u003e **Disclaimer:** This project is for **educational purposes and AI automation research only**.\n\u003e The authors are not responsible for any misuse or for any damages resulting from the use of this tool.\n\u003e Users are solely responsible for ensuring compliance with applicable laws and the terms of service\n\u003e of any websites accessed. This software is provided \"as-is\" without warranty of any kind.\n\u003e\n\u003e This project is not affiliated with Continente or Sonae MC.\n\n\u003e **Note:** This project was partially developed with AI assistance and may contain bugs or unexpected behavior. Use at your own risk.\n\n## Features\n\n- Search 50,000+ products with brand, price, and dietary filters\n- Full product details with EAN/barcode, nutritional info, and allergens\n- Browse 251 product categories (14 top-level, ~100 L2, ~137 L3)\n- Current weekly flyers and catalogs (iPaper integration)\n- Search autocomplete suggestions\n- Find 228 stores across Portugal with GPS coordinates\n- 6 dietary filters: vegan, vegetarian, gluten-free, lactose-free, sugar-free, bio\n- Multiple output formats: table, JSON, compact (TSV)\n- No authentication required\n\n## Installation\n\n### From source\n\n```bash\ncargo install --git https://github.com/nikuscs/continentes\n```\n\n### Pre-built binaries\n\nDownload from [Releases](https://github.com/nikuscs/continentes/releases):\n\n| Platform | File |\n|----------|------|\n| macOS (Apple Silicon) | `cnt-macos-arm64.tar.gz` |\n| Linux (x64) | `cnt-linux-x64.tar.gz` |\n| Linux (ARM64) | `cnt-linux-arm64.tar.gz` |\n\n```bash\ntar -xzf cnt-*.tar.gz \u0026\u0026 chmod +x cnt \u0026\u0026 sudo mv cnt /usr/local/bin/\n```\n\n## Usage\n\n### Search products\n\n```bash\ncnt search \"leite\"                                    # basic search\ncnt search \"cerveja\" --brand \"Super Bock\"             # filter by brand\ncnt search \"arroz\" --price-min 1 --price-max 3        # price range\ncnt search \"leite\" --vegan --sort price-low-to-high   # dietary + sort\ncnt search \"bolachas\" --gluten-free --page 2          # paginate\n```\n\n### Product details\n\n```bash\ncnt product 6879912                  # basic info\ncnt product 6879912 --nutrition      # include nutritional data\n```\n\n```\nLeite UHT Meio Gordo Continente\n===============================\n\nID:           6879912\nBrand:        Continente\nPrice:        0,86€\nUnit Price:   0,86€/lt\nPackage:      emb. 1 lt\nRating:       3.9\nCategory:     Laticínios e Ovos \u003e Leite \u003e Leite Meio Gordo\nEAN:          5601312508007\nBadge:        Produzido em Portugal\n```\n\n### Browse categories\n\n```bash\ncnt browse frescos                     # by name (fuzzy match)\ncnt browse laticinios-leite            # by exact cgid\ncnt browse \"cerveja\" --sort unit-price  # with sorting\n```\n\n### Search suggestions\n\n```bash\ncnt suggest \"arroz\"     # autocomplete (min 5 chars)\n```\n\n### Find stores\n\n```bash\ncnt stores --lat 38.7 --lon -9.1              # Lisbon area\ncnt stores --lat 41.1 --lon -8.6 --radius 20  # Porto, 20km\n```\n\n### List categories\n\n```bash\ncnt categories            # tree view\ncnt categories --format json  # machine-readable\n```\n\n### Browse flyers\n\n```bash\ncnt flyers                    # current weekly flyers\ncnt flyers --format json      # machine-readable\n```\n\n## Output formats\n\n```bash\ncnt search \"leite\"                     # table (default)\ncnt search \"leite\" --format json       # JSON\ncnt search \"leite\" --format compact    # TSV for piping\n```\n\n```bash\n# Pipe to jq\ncnt search \"leite\" --format json | jq '.products[].name'\n\n# Pipe to other tools\ncnt search \"leite\" --format compact | sort -t$'\\t' -k2 -n\n```\n\n## Dietary filters\n\n| Flag | Description |\n|------|-------------|\n| `--vegan` | Vegan products only |\n| `--vegetarian` | Vegetarian products only |\n| `--gluten-free` | Gluten-free only |\n| `--lactose-free` | Lactose-free only |\n| `--sugar-free` | Sugar-free only |\n| `--bio` | Organic/biological only |\n\n## Sort options\n\n| Value | Description |\n|-------|-------------|\n| `relevance` | Default ranking |\n| `price-low-to-high` | Cheapest first |\n| `price-high-to-low` | Most expensive first |\n| `unit-price` | By price per unit (kg/lt) |\n| `name-asc` | Name A-Z |\n| `name-desc` | Name Z-A |\n\n## Configuration\n\nPlace at `./continente.toml` or `~/.config/continente/continente.toml`:\n\n```toml\n[http]\ntimeout_secs = 30\nretries = 3\ndelay_ms = 100\n\n[output]\nformat = \"table\"   # table, json, compact\n```\n\n## Global options\n\n| Flag | Env var | Description |\n|------|---------|-------------|\n| `--format \u003cFORMAT\u003e` | | Output: table, json, compact |\n| `-v, --verbose` | | Debug logging |\n| `--config \u003cPATH\u003e` | `CONTINENTE_CONFIG` | Config file path |\n\n## AI Agents\n\nIf you are an AI agent (Claude Code, Claude.ai, OpenAI Codex, OpenClaw, or any tool-calling agent), you can use `cnt` as a skill to search Portuguese supermarket products. Download the binary and call it directly from your tool/shell integration. A `SKILL.md` file is included for Claude Code skill registration.\n\n### Quick setup\n\nDownload the pre-compiled binary for your platform from [Releases](https://github.com/nikuscs/continentes/releases) and place it in your `PATH`.\n\n### Searching products\n\n```bash\n# Search with JSON output for parsing\ncnt search \"leite\" --format json\n\n# Filter by dietary requirements\ncnt search \"queijo\" --vegan --format json\n\n# Get full product details with nutrition\ncnt product 6879912 --nutrition --format json\n\n# Find cheapest option\ncnt search \"azeite\" --sort unit-price --format json\n```\n\n### Building a shopping list\n\n```bash\n# Search multiple products and extract prices\ncnt search \"leite\" --format json | jq '.products[:3] | .[] | {id, name, price}'\ncnt search \"pão\" --format json | jq '.products[:3] | .[] | {id, name, price}'\n```\n\n### Finding stores\n\n```bash\n# Find nearest stores to coordinates\ncnt stores --lat 38.7 --lon -9.1 --format json | jq '.[0] | {name, address, city}'\n```\n\n### Tips for agents\n\n- Use `--format json` for structured output you can parse\n- Product IDs are numeric strings (e.g., `6879912`) — extract from search results\n- Use `--nutrition` flag on `product` command for full nutritional data\n- Use `--sort unit-price` for best value comparisons\n- Dietary filters can be combined: `--vegan --gluten-free --bio`\n- Categories use internal `cgid` values — use `cnt categories --format json` to get the mapping\n- No authentication needed — all endpoints are public\n\nFeel free to copy and adapt this tool's interface into your own skill definitions or MCP server configurations.\n\n## How it works\n\nThe CLI interacts with Continente's Salesforce Commerce Cloud (SFCC) storefront controllers. These are the same endpoints the website uses — no private APIs, no authentication, no scraping of rendered pages. Product data is extracted from structured `data-` attributes and JSON responses.\n\nAll endpoint details are documented inline in `src/api/client.rs`.\n\n## Related Projects\n\n- [⚖️ lauyer](https://github.com/nikuscs/lauyer) — Fast CLI for searching Portuguese court jurisprudence and legislation\n- [🕷️ crauler](https://github.com/nikuscs/crauler) — Web crawler with proxy routing and HTML→Markdown\n- [🦎 amz-crawler](https://github.com/nikuscs/amz-crawler) — Amazon product crawler with TLS fingerprinting\n- [🕹️ scrauper](https://github.com/nikuscs/scrauper) — Multi-threaded ScreenScraper.fr scraper for ES-DE\n\n## License\n\nMIT — see `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikuscs%2Fcontinentes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikuscs%2Fcontinentes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikuscs%2Fcontinentes/lists"}