snag

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

q

Search text, as typed into the site's search box. At most 100 characters.

category

One category.

  • laptops
  • desktops
  • components
  • monitors
  • projectors
  • storage
  • audio
  • accessories
  • gaming
  • networking
  • security
  • phones-tablets
subrepeatable, up to 10

Subcategory slugs; only those belonging to category apply. Repeat the parameter for several values; at most 10 are used.

storerepeatable, up to 10

Store domains, e.g. sigma-computer.com. Repeat the parameter for several values; at most 10 are used.

brandrepeatable, up to 10

Brand slugs, as returned in brand.slug. Repeat the parameter for several values; at most 10 are used.

min

Minimum price in EGP.

max

Maximum price in EGP.

discount

Minimum discount percentage.

  • 0
  • 10
  • 25
  • 50
sortdefault newest

Order of results.

  • newest
  • discount
  • price-asc
  • price-desc
  • ending
page1 to 10, default 1

24 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, and domain to use as a store filter value.
brandobject
The brand: name, and slug to use as a brand filter 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/mcp

Other 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:

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. checkedAt says 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.