Snag for developers
Every live deal on Snag is available to programs and AI agents: as JSON, through an MCP server, or as Markdown. It is free and read-only, with no key or sign-up.
JSON feed
GET /api/feed returns one page of live offers, filtered and sorted exactly like the home feed. Every parameter is optional; unknown or invalid values are ignored rather than rejected. Pages hold 24 offers and stop at page 10, so narrow the filters rather than paging further.
curl "https://www.snag-eg.store/api/feed?category=monitors&max=15000&sort=price-asc"Parameters
qSearch text, as typed into the site's search box. At most 100 characters.
categoryOne category.
laptopsdesktopscomponentsmonitorsprojectorsstorageaudioaccessoriesgamingnetworkingsecurityphones-tablets
subrepeatable, up to 10Subcategory slugs; only those belonging to
categoryapply. Repeat the parameter for several values; at most 10 are used.storerepeatable, up to 10Store domains, e.g.
sigma-computer.com. Repeat the parameter for several values; at most 10 are used.brandrepeatable, up to 10Brand slugs, as returned in
brand.slug. Repeat the parameter for several values; at most 10 are used.minMinimum price in EGP.
maxMaximum price in EGP.
discountMinimum discount percentage.
0102550
sortdefault newestOrder of results.
newestdiscountprice-ascprice-descending
page1 to 10, default 124 offers per page.
Response
page, pageSize, pageCount, total and offers. An example, with made-up values:
{
"page": 1,
"pageSize": 24,
"pageCount": 3,
"total": 61,
"offers": [
{
"id": "6f1c2b1e-8d4a-4c1e-9d7a-2b3c4d5e6f70",
"title": "Example 27\" QHD 165Hz Gaming Monitor",
"url": "https://www.snag-eg.store/offers/6f1c2b1e-8d4a-4c1e-9d7a-2b3c4d5e6f70",
"store": {
"name": "Example Store",
"domain": "store.example"
},
"brand": {
"name": "Example",
"slug": "example"
},
"category": "monitors",
"subcategory": "gaming-monitors",
"specs": [
"27\"",
"QHD",
"165Hz"
],
"price": 11999,
"originalPrice": 14999,
"discountPercent": 20,
"lowestPrice30Days": 11499,
"currency": "EGP",
"imageUrl": "https://store.example/images/monitor.jpg",
"endsAt": null,
"postedAt": "2026-09-12T08:30:00.000Z",
"checkedAt": "2026-10-05T06:00:00.000Z"
}
]
}Offer fields
idstring- The offer's id; also the last part of its Snag URL.
titlestring- The product title as the store lists it.
urlstring- The offer's page on Snag, which links to the store.
storeobject- The store selling it:
name, anddomainto use as astorefilter value. brandobject- The brand:
name, andslugto use as abrandfilter value. categorystring- Category slug.
subcategorystring or null- Subcategory slug, or null when the offer has none.
specsarray- Short spec labels, such as screen size or memory.
priceinteger- Current price in whole Egyptian pounds.
originalPriceinteger or null- Price before the discount, when the store shows one; null when it implies more than 80% off, which is almost always an invented list price.
discountPercentinteger- Discount from the original price, in percent.
lowestPrice30Daysinteger or null- Lowest price seen in the last 30 days; null until the offer has 30 days of history.
currencystring- Always
EGP. imageUrlstring- Product image, hosted by the store.
endsAtstring or null- When the deal ends, if the store says.
postedAtstring- When Snag first listed the offer.
checkedAtstring- When the price was last confirmed at the store.
Errors come back as { error: { code, message, requestId } }. Quote the requestId if you report one. The full contract is in the OpenAPI description.
MCP server
https://www.snag-eg.store/mcp is a read-only MCP server over Streamable HTTP, with no authentication. It answers from the same data as the JSON feed.
Claude Code
claude mcp add --transport http snag https://www.snag-eg.store/mcpOther clients
Clients that read an mcpServers config take the URL; the exact format varies by client.
{
"mcpServers": {
"snag": {
"type": "http",
"url": "https://www.snag-eg.store/mcp"
}
}
}Tools
search_deals- Search live tech and electronics deals from Egyptian stores. Prices are whole EGP. Returns one page of offers with paging totals; each offer's url is its page on Snag.
get_offer- One live offer by id, plus the same product at other stores for price comparison. Fails if the offer does not exist or has ended.
list_categories- The category and subcategory slugs and names that search_deals accepts as filters.
Markdown pages
The home feed and every offer page answer Accept: text/markdown with a Markdown version of the page, query parameters included. Handy for feeding a page straight to a language model.
curl -H "Accept: text/markdown" https://www.snag-eg.store/Discovery files
Agents can find all of this on their own. The homepage's Link header points at the API catalog, and these files describe the rest:
- /openapi.jsonOpenAPI description of the JSON feed
- /.well-known/api-catalogAPI catalog (RFC 9727)
- /.well-known/mcp/server-card.jsonMCP server card
- /.well-known/agent-skills/snag-deals/SKILL.mdAgent skill for finding deals with Snag
- /.well-known/ai-catalog.jsonAgentic resource catalog (ARD)
- /auth.mdauth.md: no credentials needed
Using the data
- Free to use, for anything. No key, no sign-up.
- When you show a deal, please link to its
url, the offer's page on Snag. Credit is appreciated, not required. - Prices change.
checkedAtsays when a price was last confirmed at the store; show it when freshness matters. - Prices are whole Egyptian pounds, and only live offers are returned.