Online Reviews API
Scrape online reviews instantly with a simple API call
Our Reviews APIs are the easiest way to scrape product reviews from ecommerce websites.
Getting Started
To scrape online reviews from the platforms we support, you need 2 query parameters:
-
An API key, available here as
api_key
-
The encoded listing or product URL for which you need the reviews as
url
-
(Optional) The page number from which you want the reviews as
page
The following command is an example of how you can get reviews for a listing on a platform we support:
curl -L -X GET 'https://data.unwrangle.com/api/getter/?url=<LISTING_URL>&api_key=<API_KEY>'
import requests
url = "https://data.unwrangle.com/api/getter/?url=<LISTING_URL>&api_key=<API_KEY>"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
var axios = require('axios');
var config = {
method: 'get',
url: 'https://data.unwrangle.com/api/getter/?url=<LISTING_URL>&api_key=<API_KEY>',
headers: { }
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("https://data.unwrangle.com/api/getter/?url=%3CLISTING_URL%3E&api_key=%3CAPI_KEY%3E")
.asString();
require "uri"
require "net/http"
url = URI("https://data.unwrangle.com/api/getter/?url=<LISTING_URL>&api_key=<API_KEY>")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://data.unwrangle.com/api/getter/?url=<LISTING_URL>&api_key=<API_KEY>');
$request->setRequestMethod('GET');
$request->setOptions(array());
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://data.unwrangle.com/api/getter/?url=%3CLISTING_URL%3E&api_key=%3CAPI_KEY%3E"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
The reviews returned will be for the page
number specified (default is 1
) sorted by recency.
URL
The query parameter url
is where the product or listing URL must go, in an encoded format.
Say you want the reviews for this particular Amazon listing: https://www.amazon.com/Arctix-Womens-Jacket-Island-Medium/dp/B07W6X1K55
.
For this the listing URL must be encoded and assigned to the url
query parameter.
After encoding it will look like this: https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55
.
Encoding the URL is trivially easy in most programming languages. The following snippet showcases how to do this:
sudo apt-get install gridsite-clients
urlencode "LISTING URL"
import urllib.parse
encoded_url = urllib.parse.quote("LISTING URL")
encoded_url = encodeURIComponent("LISTING URL")
String encoded_url = URLEncoder.encode("LISTING URL", "UTF-8");
require 'uri'
encoded_url = URI::encode("LISTING URL")
<?php
$url_encoded = urlencode("YOUR URL");
?>
package main
import (
"net/url"
)
func main() {
encoded_url := url.QueryEscape("YOUR URL")
}
Supported Platforms
Platform | Expected URL Format (after encoding) |
---|---|
Yelp | https%3A%2F%2Fwww.yelp.com%2Fbiz%2Fchateau-tivoli-bed-and-breakfast-san-francisco |
Amazon | https%3A%2F%2Fwww.amazon.com%2FColumbia-Glennaker-Jacket-Black-Large%2Fdp%2FB00LEX0Y3K%2F |
Costco | https%3A%2F%2Fwww.costco.com%2Fapple-airpods-pro.product.100525619.html |
Target | https%3A%2F%2Fwww.target.com%2Fp%2Fapple-airpods-with-charging-case%2F-%2FA-54191097 |
BestBuy | https%3A%2F%2Fwww.bestbuy.com%2Fsite%2Fbose-quietcomfort-earbuds-true-wireless-noise-cancelling-in-ear-headphones-triple-black%2F6419203.p |
Home Depot | https%3A%2F%2Fwww.homedepot.com%2Fp%2FHDX-100-ft-16-3-Indoor-Outdoor-Extension-Cord-Orange-HD-277-525%2F100650619 |
Walmart | https%3A%2F%2Fwww.walmart.com%2Fip%2FiPhone-Charger-2Pacsk-3-Ft-Charging-Cable-Wall-Power-Adapter-Plug-Block-Compatible-12-pro-max-11-X-8-8-Plus-7-7-Plus-6-6S-6-Plu-5S-SE-Mini-Air-Pro-Ca%2F404907731 |
Sams' Club | https%3A%2F%2Fwww.samsclub.com%2Fapple-airpods-with-charging-case%2F54191097%2F |
Lowes | https%3A%2F%2Fwww.lowes.com%2Fsearch%3FsearchTerm%3Ddrill%26searchBy%3Dkeyword |
MediaMarkt | https%3A%2F%2Fwww.mediamarkt.de%2Fsearch%3FsearchTerm%3Dlaptop%26searchBy%3Dkeyword |
Currys.co.uk | https%3A%2F%2Fwww.currys.co.uk%2Fsearch%3FsearchTerm%3Dlaptop%26searchBy%3Dkeyword |
We can add support for new platforms within 2 or 3 days in most cases. Please reach out to us at sales@unwrangle.com or on the chat box on our website.
Countries
On Amazon and MediaMarkt, each country extension is supported (for e.g. https://www.amazon.de/<listing_path> or https://www.mediamarkt.de/<listing_path>
) and our API responds with the default language for that country.
Credits
Each successful API request to any of the Reviews APIs costs 10
credits.
Example
An example of a typical request and response is showcased below:
curl -L -X GET 'https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=API_KEY'
import requests
url = "https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=<API_KEY>"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
var axios = require('axios');
var config = {
method: 'get',
url: 'https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=<API_KEY>',
headers: { }
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=<API_KEY>")
.asString();
require "uri"
require "net/http"
url = URI("https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=<API_KEY>")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=<API_KEY>');
$request->setRequestMethod('GET');
$request->setOptions(array());
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://data.unwrangle.com/api/getter/?url=https%3A%2F%2Fwww.amazon.com%2FArctix-Womens-Jacket-Island-Medium%2Fdp%2FB07W6X1K55&platform=amazon_reviews&page=1&api_key=<API_KEY>"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
For the above request the response looks like this:
Note
When the Amazon Reviews API is used without a cookie, it returns the most recent 8 reviews. See Amazon Product Reviews URL for more details.
{
"success": true,
"url": "https://www.amazon.com/Arctix-Womens-Jacket-Island-Medium/dp/B07W6X1K55",
"sort_by": "recent",
"total_results": 8,
"reviews": [
{
"id": "R2QFEOSF7N2H4H",
"date": "2024-10-19",
"author_name": "Matthew",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AEC7YLVC2TMZQZI4IL3PVBE5HTLQ/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 2.0,
"review_title": "2.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R2QFEOSF7N2H4H/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "Runs very small",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: 3X",
"Color: Plum"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R3H9I0EJQ93746",
"date": "2024-10-17",
"author_name": "Kati",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AFMUL3EHZBAUKB5M6GAQAIC2WCMA/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 5.0,
"review_title": "5.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R3H9I0EJQ93746/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "Love the the color. TTC and quality is 10/10!",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R2GW7TL373M1YH",
"date": "2024-10-14",
"author_name": "AndreaLK",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AHQLMIX3DYXXFZ42EZLXUQTWGLRA/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 2.0,
"review_title": "2.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R2GW7TL373M1YH/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "Way too large around chest and arms. Returning.",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: 3X",
"Color: Black"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R3CJ3Q4S3OOKTU",
"date": "2024-10-02",
"author_name": "megan",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AHOSNNW3THBHYHUYJ6GEHMP6HWMA/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 5.0,
"review_title": "5.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R3CJ3Q4S3OOKTU/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "Keeps you warm and dry",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: Small",
"Color: Slate Blue"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R1Q1UHYF5WT11Z",
"date": "2024-09-29",
"author_name": "amandamay24",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AHG6XTLFIEJM7CYUOVB52ZBOVOXQ/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 5.0,
"review_title": "5.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R1Q1UHYF5WT11Z/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "I love the plum color, the fit, and the quality of this jacket. I got a medium and I usually wear a small or medium. The sleeves are perfect, not too long at all (I have crazy long arms, though, and most shirts are too short for me).",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: Medium",
"Color: Plum"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R2G1ARVUGQSL31",
"date": "2024-09-14",
"author_name": "Brianne Algerio",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AHXKO4CKJXSYTVSU47FR5XDSYR5Q/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 5.0,
"review_title": "5.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R2G1ARVUGQSL31/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "One thing I wish it had is an inside pocket that was just as deep or close to the outter pockets.",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: Medium",
"Color: Black"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R2Y2607Q4TUY4V",
"date": "2024-09-12",
"author_name": "julia",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AHEBE4DGTSHKGUVFWUYNV5RKTZUQ/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 3.0,
"review_title": "3.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R2Y2607Q4TUY4V/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "Hood is big so it covers you from the rain. Feels like plastic, but like the mesh.",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: 3X",
"Color: Plum"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
},
{
"id": "R1TUIJQU05Q2KE",
"date": "2024-09-08",
"author_name": "missy",
"author_url": "https://www.amazon.com/gp/profile/amzn1.account.AFQMETTQDLPAQXTY2OXYENYD2HUA/ref=cm_cr_othr_d_gw_tr?ie=UTF8",
"rating": 5.0,
"review_title": "5.0 out of 5 stars",
"review_url": "https://www.amazon.com/gp/customer-reviews/R1TUIJQU05Q2KE/ref=cm_cr_othr_d_rvw_ttl?ie=UTF8&ASIN=B07W6X1K55",
"review_text": "I really like the fabric and fit of this jacket. Have not rain tested it yet, so we will see.",
"review_imgs": [],
"review_videos": [],
"meta_data": {
"variant_info": [
"Size: Small",
"Color: Teal"
],
"verified_purchase": true,
"amazon_vine": false
},
"location": "United States"
}
],
"result_count": 8,
"meta_data": {},
"remaining_credits": 1996539
}
Conclusion
The Online Reviews API is a powerful tool for extracting customer reviews from various online platforms. By using this API, you can quickly and easily access a wide range of customer feedback, which can be invaluable for making informed business decisions.