Woot Developer Portal NAV Shell HTTP JavaScript Node.js Ruby Python Java Go PHP Developer Portal v1.0 Throttling Limits Authorization Contact Authentication Default GetNamedFeed options__feed_{feedname} GetOffers GetOffer Schemas ShippingMethod Empty FeedItem FeedPage Offer OfferIds Photo OfferItem Offers Map PriceRange Developer Portal v1.0 Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu. Welcome to Woot! developer portal! Here, you can find documentation on official APIs that can be consumed programmatically to access live deals sold on Woot!, an Amazon company. Reach out to the below contact to see how you can become eligible for affiliates traffic pay-cut. Throttling Limits Rate The rate at which tokens are added to the Token Bucket. This value indicates the average number of requests per second over an extended period of time Burst The capacity of the Token Bucket Quota The total number of requests you can perform in a given time period. This limit resets at UTC 00:00:00 every day 1 request per second 10 requests 1000 requests per day If you would like to increase the throttling limit, reach out to the below contact explaining your case Requests served from cache would not count against the throttling limit Authorization Issued secret key must be passed in header of every request made. Request header name is: x-api-key Contact Request an API key via the forums Base URLs: https://developer.woot.com Authentication API Key (api_key) Parameter Name: x-api-key, in: header. Default GetNamedFeed Code samples # You can also use wget curl -X GET https://developer.woot.com/feed/{feedname} \ -H 'Accept: application/json' \ -H 'x-api-key: API_KEY' GET https://developer.woot.com/feed/{feedname} HTTP/1.1 Host: developer.woot.com Accept: application/json const headers = { 'Accept':'application/json', 'x-api-key':'API_KEY' }; fetch('https://developer.woot.com/feed/{feedname}', { method: 'GET', headers: headers }) .then(function(res) { return res.json(); }).then(function(body) { console.log(body); }); const fetch = require('node-fetch'); const headers = { 'Accept':'application/json', 'x-api-key':'API_KEY' }; fetch('https://developer.woot.com/feed/{feedname}', { method: 'GET', headers: headers }) .then(function(res) { return res.json(); }).then(function(body) { console.log(body); }); require 'rest-client' require 'json' headers = { 'Accept' => 'application/json', 'x-api-key' => 'API_KEY' } result = RestClient.get 'https://developer.woot.com/feed/{feedname}', params: { }, headers: headers p JSON.parse(result) import requests headers = { 'Accept': 'application/json', 'x-api-key': 'API_KEY' } r = requests.get('https://developer.woot.com/feed/{feedname}', headers = headers) print(r.json()) URL obj = new URL("https://developer.woot.com/feed/{feedname}"); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); int responseCode = con.getResponseCode(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); package main import ( "bytes" "net/http" ) func main() { headers := map[string][]string{ "Accept": []string{"application/json"}, "x-api-key": []string{"API_KEY"}, } data := bytes.NewBuffer([]byte{jsonReq}) req, err := http.NewRequest("GET", "https://developer.woot.com/feed/{feedname}", data) req.Header = headers client := &http.Client{} resp, err := client.Do(req) // ... } 'application/json', 'x-api-key' => 'API_KEY', ); $client = new \GuzzleHttp\Client(); // Define array of request body. $request_body = array(); try { $response = $client->request('GET','https://developer.woot.com/feed/{feedname}', array( 'headers' => $headers, 'json' => $request_body, ) ); print_r($response->getBody()->getContents()); } catch (\GuzzleHttp\Exception\BadResponseException $e) { // handle exception or api errors. print_r($e->getMessage()); } // ... GET /feed/{feedname} This end point fetches live minified offers that are sold on Woot! in a particular category or all categories. Featured deals are returned on the first results page. Parameters Name In Type Required Description feedname path string true Name of Woot! category for which offers are fetched. Supported feed names are: page query string false Returns the offers from a particular page passed in. Page size is set to 100 offers per page. If this parameter is not passed in, all items sold on the particular category is returned. Detailed descriptions feedname: Name of Woot! category for which offers are fetched. Supported feed names are: All Clearance Computers Electronics Featured Home Gourmet Shirts Sports Tools Wootoff Example responses Success Response { "Items": [ { "Categories": [ "HOME", "TOOLS", "HOME/Lighting & Fans", "TOOLS/Lighting & Fans" ], "Condition": null, "EndDate": "2018-10-10T05:00:00+00:00", "ForumUrl": "https://forums.woot.com/t/24586", "IsFeatured": false, "IsFulfilledByAmazon": false, "IsWootOff": false, "IsSoldOut": true, "IsAvailableOnMobileAppOnly": true, "ListPrice": { "Minimum": 49.99, "Maximum": 49.99 }, "OfferId": "2a3deba2-6f5a-43df-875a-ea84709c9a30", "Photo": "https://d3gqasl9vmjfd8.cloudfront.net/c14c0b0d-a363-4f5b-a116-5849ca37f4f5.jpg", "SalePrice": { "Minimum": 39.99, "Maximum": 39.99 }, "StartDate": "2018-10-09T05:00:00+00:00", "Subtitle": null, "Title": "TP-Link Smart LED Light Bulb (2-Pack)", "Url": "https://tools.woot.com/offers/tp-link-smart-led-light-bulb-2-pack-3" }, { "Categories": [ "SPORT", "TOOLS", "SPORT/Outdoor Recreation", "TOOLS/Lighting & Fans" ], "Condition": null, "EndDate": "2018-10-10T05:00:00+00:00", "ForumUrl": "https://forums.woot.com/t/24587", "IsFeatured": false, "IsFulfilledByAmazon": false, "IsWootOff": false, "IsAvailableOnMobileAppOnly": true, "ListPrice": null, "OfferId": "33fb06a8-6c83-47c6-bcdc-ddf8d6780dea", "Photo": "https://d3gqasl9vmjfd8.cloudfront.net/6da29672-cb8e-4dc8-861e-afb4cdb08943.jpg", "SalePrice": { "Minimum": 19.99, "Maximum": 19.99 }, "StartDate": "2018-09-19T05:00:00+00:00", "Subtitle": null, "Title": "1000 Lumen Viper Rechargeable Flashlight 2-PK", "Url": "https://sport.woot.com/offers/1000-lumen-viper-rechargeable-flashlight-2-pk-4" } ], "MarketingName": "Tools & Garden", "TotalPages": 1 } Responses Status Meaning Description Schema 200 OK Success Response FeedPage 400 Bad Request Bad request. Invalid inputs passed. None 403 Forbidden Forbidden None 404 Not Found Not Found None Response Headers Status Header Type Format Description 200 Access-Control-Allow-Origin string none To perform this operation, you must be authenticated by means of one of the following methods: api_key options__feed_{feedname} Code samples # You can also use wget curl -X OPTIONS https://developer.woot.com/feed/{feedname} \ -H 'Accept: application/json' OPTIONS https://developer.woot.com/feed/{feedname} HTTP/1.1 Host: developer.woot.com Accept: application/json const headers = { 'Accept':'application/json' }; fetch('https://developer.woot.com/feed/{feedname}', { method: 'OPTIONS', headers: headers }) .then(function(res) { return res.json(); }).then(function(body) { console.log(body); }); const fetch = require('node-fetch'); const headers = { 'Accept':'application/json' }; fetch('https://developer.woot.com/feed/{feedname}', { method: 'OPTIONS', headers: headers }) .then(function(res) { return res.json(); }).then(function(body) { console.log(body); }); require 'rest-client' require 'json' headers = { 'Accept' => 'application/json' } result = RestClient.options 'https://developer.woot.com/feed/{feedname}', params: { }, headers: headers p JSON.parse(result) import requests headers = { 'Accept': 'application/json' } r = requests.options('https://developer.woot.com/feed/{feedname}', headers = headers) print(r.json()) URL obj = new URL("https://developer.woot.com/feed/{feedname}"); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("OPTIONS"); int responseCode = con.getResponseCode(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); package main import ( "bytes" "net/http" ) func main() { headers := map[string][]string{ "Accept": []string{"application/json"}, } data := bytes.NewBuffer([]byte{jsonReq}) req, err := http.NewRequest("OPTIONS", "https://developer.woot.com/feed/{feedname}", data) req.Header = headers client := &http.Client{} resp, err := client.Do(req) // ... } 'application/json', ); $client = new \GuzzleHttp\Client(); // Define array of request body. $request_body = array(); try { $response = $client->request('OPTIONS','https://developer.woot.com/feed/{feedname}', array( 'headers' => $headers, 'json' => $request_body, ) ); print_r($response->getBody()->getContents()); } catch (\GuzzleHttp\Exception\BadResponseException $e) { // handle exception or api errors. print_r($e->getMessage()); } // ... OPTIONS /feed/{feedname} Parameters Name In Type Required Description feedname path string true none Example responses 200 Response {} Responses Status Meaning Description Schema 200 OK Returns CORs headers Empty Response Headers Status Header Type Format Description 200 Cache-Control string none 200 Access-Control-Allow-Origin string none 200 Access-Control-Allow-Methods string none 200 Access-Control-Allow-Headers string none This operation does not require authentication GetOffers Code samples # You can also use wget curl -X POST https://developer.woot.com/getoffers \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -H 'x-api-key: API_KEY' POST https://developer.woot.com/getoffers HTTP/1.1 Host: developer.woot.com Content-Type: application/json Accept: application/json const inputBody = '[ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ]'; const headers = { 'Content-Type':'application/json', 'Accept':'application/json', 'x-api-key':'API_KEY' }; fetch('https://developer.woot.com/getoffers', { method: 'POST', body: inputBody, headers: headers }) .then(function(res) { return res.json(); }).then(function(body) { console.log(body); }); const fetch = require('node-fetch'); const inputBody = [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ]; const headers = { 'Content-Type':'application/json', 'Accept':'application/json', 'x-api-key':'API_KEY' }; fetch('https://developer.woot.com/getoffers', { method: 'POST', body: JSON.stringify(inputBody), headers: headers }) .then(function(res) { return res.json(); }).then(function(body) { console.log(body); }); require 'rest-client' require 'json' headers = { 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'x-api-key' => 'API_KEY' } result = RestClient.post 'https://developer.woot.com/getoffers', params: { }, headers: headers p JSON.parse(result) import requests headers = { 'Content-Type': 'application/json', 'Accept': 'application/json', 'x-api-key': 'API_KEY' } r = requests.post('https://developer.woot.com/getoffers', headers = headers) print(r.json()) URL obj = new URL("https://developer.woot.com/getoffers"); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); int responseCode = con.getResponseCode(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); package main import ( "bytes" "net/http" ) func main() { headers := map[string][]string{ "Content-Type": []string{"application/json"}, "Accept": []string{"application/json"}, "x-api-key": []string{"API_KEY"}, }…