FeedCheck offers an API in order to help consumer brands easily integrate review management into their platforms. Below you will find the technical documentation required for your integration. You can play with the api using our swagger page.
The first interaction with our API is the authentication. The FeedCheck API uses Basic Authentication with username and password (Secret API Key). You can find this information in the Settings section ( https://app.feedcheck.co/settings ). The Secret API Key needs to be included in any of the following API calls. Otherwise, a 401 error code with the message "Could not verify your access level for that URL" will be returned.
Basic authentication is a simple authentication scheme built into the HTTP protocol. The client sends HTTP requests with the Authorization header that contains the word Basic word followed by a space and a base64-encoded string username:password.
In FeedCheck, a product is defined by a group of links, each link pointing out to a product page (e.g. https://www.amazon.com/Apple-iPhone-Fully-Unlocked-5-8/dp/B075QNGDZD/ ).
For adding a product you need to make a POST request at /api/v2/products
endpoint with the following payload:
{ "name":"product name", "owner":"my product", "links": [ "https://www.amazon.com/Apple-Generation-Cancelling-Transparency-Personalized/dp/B0BDHWDR12?ref_=ast_sto_dp" ] }where "name" contains your product name, owner contains "my product" or "competitor" value, "links" is a list of string which contains the links related to this product.
curl -X POST "https://app.feedcheck.co/api/v2/products" -H "accept: application/json" -H "Authorization: Basic {{ base64 encoded username:password }}" -H "Content-Type: application/json" -d "{ "name":"product name", "owner":"my product", "links":["https://www.amazon.com/Apple-Generation-Cancelling-Transparency-Personalized/dp/B0BDHWDR12?ref_=ast_sto_dp"] }"where username and password are auth informations.
Retrieving products from your account is done by GET request at /api/v2/products
. The response has the following format:
[ { "groups": [], "id": 29438, "links": [ 119105 ], "name": "Webcam Cover Slide 6 Pack, 0.027 inch Ultra-Thin Metal Magnet Web Camera Cover for MacBook Pro iMac Laptop PC iPad Pro iPhone Surface Pro Echo Show Camera Blocker Slider, Protect Your Visual Prvacy", "owner": "my product", "rating": 3.8, "ratingsNumber": 203 }, { "groups": [], "id": 29439, "links": [ 119106 ], "name": "Portable Monitor, InnoView 15.8 Inch FHD 1080P USB C HDMI Second External Monitor for Laptop, Desktop, MacBook, Phones, Tablet, PS5/4, Xbox, Switch, Built-in Speaker with Protective Case", "owner": "my product", "rating": 4.5, "ratingsNumber": 2032 } ]
Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/products" -H "accept: application/json" -H "Authorization: Basic {{ base64 encoded username:password }}"
In FeedCheck the products can be added one by one to a group with a POST request at /api/v2/groups/{groupId}/addProduct
with the following payload:
{ "productId": 31490 }where "productId" contains the id of the product and "groupId" is a integer which represents the id of a group that exists in FeedCheck.
curl -X POST "https://app.feedcheck.co/api/v2/groups/2804/addProduct" -H "accept: application/json" -H "Authorization: Basic {{ base64 encoded username:password }}" -H "Content-Type: application/json" -d "{"productId":31490}"
In FeedCheck we can fetch products from a specific group making a request at /api/v2/groups/{groupId}/products
and "groupId" is a integer which represents the id of a group that exists in FeedCheck.
curl -X GET "https://app.feedcheck.co/api/v2/groups/2804/products" -H "accept: application/json" -H "Authorization: Basic {{ base64 encoded username:password }}"The request returns the next response:
[ { "groups": [ 2804 ], "id": 31490, "links": [ 127737 ], "name": "My apple", "owner": "my product", "rating": 4.7, "ratingsNumber": 9258 } ]
In FeedCheck the links are the places from where reviews are collected. A link point to a product page. All links belong to products, as we mentioned previously.
Adding a link to a product is done by a POST request at /api/products/{productId}/links
endpoint with the following payload:
{ "link":"https://www.amazon.com/Apple-iPhone-Fully-Unlocked-5-8/dp/B075QNGDZD/" }
Retrieving links for a specific product is done by GET request at /api/products/{productId}/links
. The response has the following format:
[ { "id": 31978, "productLink": "https://www.amazon.com/Apple-iPhone-Fully-Unlocked-5-8/dp/B075QNGDZD/", "productDataCreated": 0, "httpStatus": 0, "productName": "", "productStatus": "Processing", "domain": "amazon.com", "product": 3351, "customer": 965 } ]
We can fetch all reviews from the database using a single GET request to the endpoint /api/v2/reviews
In this way we will get a list of reviews that looks like this:
[ { "id": 12551741, "title": "Beautiful phone, happy with the upgrade", "content": "Phone freezes a bit and I need to reboot but that is maybe once a week. I am hopeful that a future update will fix this. Annoying that it doesn't read my face properly when I am wearing my glasses. Not many apps are up to the speed with the facial scan so I need to type in my password every time I check my banking statements. The missing fingerprint button took some time getting used to but once I did, I don't even miss it. The camera is lovely as is the speed. I wish there were more color and size choices, but prob next year.", "translatedEnTitle": "", "translatedEnContent": "", "rating": "4.0", "website": "amazon.com", "user": "Ofelia P.", "dataCreated": 1486447200, "dataDiscovered": 1486447200, "productId": 31978, "linkId": 121521, "signature": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } ]
Retrieving reviews for a specific product is done by GET request at /api/v2/products/{productId}/reviews
.
If you want to get reviews that are newer than a certain date you can use the URL param start_timestamp
with a timestamp in UNIX format.
The response has the following format:
[ { "id": 12551741, "title": "Beautiful phone, happy with the upgrade", "content": "Phone freezes a bit and I need to reboot but that is maybe once a week. I am hopeful that a future update will fix this. Annoying that it doesn't read my face properly when I am wearing my glasses. Not many apps are up to the speed with the facial scan so I need to type in my password every time I check my banking statements. The missing fingerprint button took some time getting used to but once I did, I don't even miss it. The camera is lovely as is the speed. I wish there were more color and size choices, but prob next year.", "translatedEnTitle": "", "translatedEnContent": "", "rating": "4.0", "website": "amazon.com", "user": "Ofelia P.", "dataCreated": 1486447200, "dataDiscovered": 1486447200, "productId": 31978, "linkId": 121521, "signature": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } ]
Retrieving reviews for a specific group is done by GET request at /api/v2/group/{groupId}/reviews
.
If you want to get reviews that are newer than a certain date you can use the URL param start_timestamp
with a timestamp in UNIX format.
The response has the same format as reviews endpoint.
Retrieving reviews for a specific link is done by GET request at /api/v2/links/{linkId}/reviews
.
If you want to get reviews that are newer than a certain date you can use the URL param start_timestamp
with a timestamp in UNIX format.
The response has the same format as reviews endpoint.
We can fetch all values needed for histogram to be displayed. We have to make a single GET request to the endpoint /api/v2/product/{productId}/histogram
{ "histogram": [ { "reviewsNumber": 1026, "percentFromTotal": 70, "rating": 5 }, { "reviewsNumber": 164, "percentFromTotal": 11, "rating": 4 }, { "reviewsNumber": 98, "percentFromTotal": 6, "rating": 3 }, { "reviewsNumber": 62, "percentFromTotal": 4, "rating": 2 }, { "reviewsNumber": 105, "percentFromTotal": 7, "rating": 1 } ], "totals": { "nps": 52.3, "reviewAverageNorm": 0.67, "reviewAverageRank": 4.34, "reviewCount": 1455 } }Below is the request in cURL format:
curl -X GET "http://0.0.0.0:32323/api/v2/histogram/29444" -H "accept: application/json" -H "Authorization: Basic {{ base64 encoded username:password }}"
Retrieving all groups in your account is done by GET request at /api/v2/groups
.
The response has the following format:
[ { "id": 123, "name": "The group name", "productIds": [ 29440, 29881 ] } ]
In FeedCheck groups can be created with a POST request at /api/v2/groups
with the following payload:
{ "name": "Group Name" }Below is the request in cURL format:
curl -X POST "https://app.feedcheck.co/api/v2/groups" -H "accept: application/json" -H "Authorization: Basic {{ base64 encoded username:password }}" -H "Content-Type: application/json" -d "{"name":"Group Name"}"
The above request returns the created group id.
Retrieving a group by id from your account is done by GET request at /api/v2/groups/{groupId}
.
The response has the following format:
{ "id": 123, "name": "The group name", "productIds": [ 29440, 29881 ] }
If you have different products with the same links in a group you may receive duplicate reviews.
If you want to deduplicate reviews use the query parameter deduplicate=1