Skip to content

Instantly share code, notes, and snippets.

@adrianhajdin
Created July 9, 2021 08:21
Show Gist options
  • Select an option

  • Save adrianhajdin/13a69e174448b112785523128d34139c to your computer and use it in GitHub Desktop.

Select an option

Save adrianhajdin/13a69e174448b112785523128d34139c to your computer and use it in GitHub Desktop.
Amazon Scraper API
const express = require('express');
const request = require('request-promise');
const PORT = process.env.PORT || 5000;
const app = express();
app.use(express.json());
const returnScraperApiUrl = (apiKey) => `http://api.scraperapi.com?api_key=${apiKey}&autoparse=true`;
// Welcome route
app.get('/', async (req, res) => {
res.send('Welcome to Amazon Scraper API!');
});
// Get product details
app.get('/products/:productId', async (req, res) => {
const { productId } = req.params;
const { api_key } = req.query;
try {
const response = await request(`${returnScraperApiUrl(api_key)}&url=https://www.amazon.com/dp/${productId}`);
res.json(JSON.parse(response));
} catch (error) {
res.json(error);
}
});
// Get product reviews
app.get('/products/:productId/reviews', async (req, res) => {
const { productId } = req.params;
const { api_key } = req.query;
try {
const response = await request(`${returnScraperApiUrl(api_key)}&url=https://www.amazon.com/product-reviews/${productId}`);
res.json(JSON.parse(response));
} catch (error) {
res.json(error);
}
});
// Get product offers
app.get('/products/:productId/offers', async (req, res) => {
const { productId } = req.params;
const { api_key } = req.query;
try {
const response = await request(`${returnScraperApiUrl(api_key)}&url=https://www.amazon.com/gp/offer-listing/${productId}`);
res.json(JSON.parse(response));
} catch (error) {
res.json(error);
}
});
// Get search results
app.get('/search/:searchQuery', async (req, res) => {
const { searchQuery } = req.params;
const { api_key } = req.query;
try {
const response = await request(`${returnScraperApiUrl(api_key)}&url=https://www.amazon.com/s?k=${searchQuery}`);
res.json(JSON.parse(response));
} catch (error) {
res.json(error);
}
});
app.listen(PORT, () => console.log(`Server Running on Port: ${PORT}`));
`${baseUrl}&url=https://www.amazon.com/dp/${productId}`)
`${baseUrl}&url=https://www.amazon.com/product-reviews/${productId}`);
`${baseUrl}&url=https://www.amazon.com/gp/offer-listing/${productId}`);
`${baseUrl}&url=https://www.amazon.com/s?k=${searchQuery}`);
@JamesCartar
Copy link
Copy Markdown

when i try with ebay, it doesn't return object of data. it's return the css file

@mansi-done
Copy link
Copy Markdown

hey, thanks for the amazing project.
However, the scrapping only works for amazon, any idea how we can use it to get JSON objects from other sites?

@priyankasaini69
Copy link
Copy Markdown

"access-control-allow-credentials":

"true"
"access-control-allow-origin":

"*"
"connection":

"keep-alive"
"content-length":

"2"
"content-type":

"application/json; charset=utf-8"
"date":

"Fri, 01 Jul 2022 16:16:52 GMT"
"etag":

"W/"2-vyGp6PvFo4RvsFtPoIWeCReyIC8""
"server":

"RapidAPI-1.2.8"
"via":

"1.1 vegur"
"x-powered-by":

"Express"
"x-rapidapi-region":

"AWS - ap-southeast-1"
"x-rapidapi-version":

"1.2.8"
Response Body
{0 items
}

I'm getting 0 items under response body in all Endpoints cases.
How can i solveit?

@alihamzarao6
Copy link
Copy Markdown

alihamzarao6 commented Jan 28, 2023

2

Getting this error. Anyone knows about it? @buddhi-ashen @adrianhajdin @Nicxzmiller

@Divyansh-singh08
Copy link
Copy Markdown

hi i am getting error
can u tell how can i fix this...
api

@Divyansh-singh08
Copy link
Copy Markdown

@adrianhajdin plz look by above code and help me here

@DevGod100
Copy link
Copy Markdown

hi i am getting error can u tell how can i fix this... api

Me too, can someone answer this issue please. @buddhi-ashen @adrianhajdin @Nicxzmiller

Does it have to do with the request being deprecated?

@neelammkw
Copy link
Copy Markdown

can we upload it any other platform now on heroku have to insert credit card info pls help

@1-Ujjwal
Copy link
Copy Markdown

1-Ujjwal commented Sep 4, 2024

can you tell the other hosting platform because now heroku is not available for free

@JokerHin
Copy link
Copy Markdown

can you tell the other hosting platform because now heroku is not available for free

maybe u can use vercel or netlify, both are free btw

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment