Skip to content
Simon edited this page Apr 9, 2025 · 1 revision

Gun.Deals API Documentation

This API scrapes and serves product data from Gun.Deals.

Endpoints

GET /search?q=QUERY[&page=N]

Search for products on Gun.Deals by keyword.

Query Parameters:

  • q (required): Search term
  • page (optional): Page number

Response: A list of product objects:

[
  {
    "image": "https://example.com/img.jpg",
    "title": "Glock 19 Gen5",
    "details": {
      "Caliber": "9mm",
      "UPC": "123456789"
    },
    "price": "$499.99",
    "link": "http://localhost:8080/product/123456789"
  }
]

GET /product/{UPC}

Returns detailed information and pricing listings for a product based on its UPC.

Path Parameters:

  • UPC: Product UPC (e.g., /product/123456789)

Response:

{
  "image": "https://example.com/product.jpg",
  "title": "Glock 19 Gen5",
  "details": {
    "Caliber": "9mm",
    "Barrel Length": "4.02\""
  },
  "all_listings": [
    {
      "store_name": "Palmetto State Armory",
      "link": "https://store.com/product-link",
      "price": "$489.99",
      "shipping": "Free",
      "out_of_stock": false
    }
  ]
}

GET /category/{slug}

Returns a list of products in a specific category.

Path Parameters:

  • slug: Category slug (e.g., hand-guns, rifles, etc.)

Example:
/category/hand-guns

Response: Same structure as /search.


GET /relevant

Fetches product tiles from the Gun.Deals homepage (trending/relevant deals).

Response: Same structure as /search.


GET /today

Fetches today's deals from Gun.Deals.

Response: Same structure as /search.


GET /coupons[?store=STORE_NAME]

Returns the latest coupons. Optionally filter by store.

Query Parameters:

  • store (optional): Case-insensitive store name filter

Response:

[
  {
    "title": "10% Off Select Ammo",
    "link": "https://gun.deals/coupon-link",
    "coupon_code": "SAVE10",
    "expiry_date": "2025-04-15",
    "store": "Palmetto State Armory"
  }
]

Returns 404 with message if no matching coupons are found.