O Amazon Product Scraper Inteligente é uma aplicação full stack desenvolvida em Node.js para coletar, tratar e exibir produtos da Amazon Brasil. A solução combina scraping estruturado, uma API REST e uma interface web responsiva para centralizar a pesquisa e a filtragem de produtos.
O projeto demonstra técnicas de Web Scraping, consumo e processamento de HTML, normalização de dados, desenvolvimento de APIs REST, observabilidade, cache, segurança e construção de interfaces modernas.
Frontend (Vite + Tailwind CSS)
↓
API REST (Node.js + Express)
↓
Axios
↓
JSDOM
↓
Processamento e normalização dos dados
↓
Resposta JSON
O frontend consome a API e apresenta os produtos em uma grade responsiva. No backend, o Axios realiza as requisições HTTP, o JSDOM interpreta o conteúdo HTML e os dados coletados são normalizados antes do retorno em JSON.
O projeto depende da estrutura HTML de um serviço externo. Alterações realizadas pela Amazon podem exigir adaptações no processo de scraping.
- Coleta automatizada de produtos da Amazon Brasil;
- pesquisa por palavra-chave;
- requisições HTTP realizadas com Axios;
- parsing do HTML com JSDOM;
- normalização e estruturação dos dados;
- disponibilização dos resultados por uma API REST em JSON.
- Avaliação mínima;
- faixa de preço mínimo e máximo;
- exibição exclusiva de produtos Prime.
- Layout responsivo e mobile-first;
- grid de produtos;
- scroll infinito para carregamento progressivo;
- feedback visual durante carregamentos e erros;
- modo escuro com persistência;
- consumo da API por
fetch; - painel de métricas em tempo real.
- Cache em memória com TTL;
- endpoint de Health Check;
- endpoint de métricas;
- monitoramento de requisições e scraping;
- monitoramento de uptime, memória, cache hits e rate limiting;
- limitação de requisições para mitigação de abuso;
- cabeçalhos de segurança;
- compressão das respostas;
- registro de requisições;
- validação dos parâmetros de entrada;
- tratamento centralizado de erros e respostas padronizadas.
GET /api/health
GET /api/metrics
GET /api/scrape?keyword=produtoO parâmetro keyword define o termo utilizado na pesquisa dos produtos.
- Node.js;
- Express;
- Axios;
- JSDOM;
- Helmet;
- Morgan;
- Compression;
- Express Rate Limit.
- Vite;
- Tailwind CSS;
- JavaScript.
- Vitest;
- JSDOM.
- Git;
- Node.js 20+;
- npm.
git clone https://github.com/seu-usuario/amazon-scraper.git
cd amazon-scraperInstale as dependências do backend e, em seguida, as dependências do frontend:
npm install
npm run install-clientNa raiz do projeto, execute:
npm startA API ficará disponível em:
http://localhost:3000
Em outro terminal, execute:
cd client
npm run devA interface ficará disponível em:
http://localhost:5173
Após iniciar os dois serviços:
- Realize uma busca por palavra-chave;
- valide o retorno dos produtos pela API;
- aplique os filtros de preço, avaliação e Prime;
- verifique o funcionamento do scroll infinito;
- consulte as métricas em
/api/metrics; - repita uma requisição para verificar o funcionamento do cache.
A aplicação separa o backend, o frontend e os testes automatizados:
amazon-product-scraper/
├── server/
├── client/
├── tests/
├── package.json
├── README.md
└── ...
server/: API REST, scraping, cache, observabilidade e middlewares;client/: interface web desenvolvida com Vite e Tailwind CSS;tests/: testes automatizados executados com Vitest;package.json: dependências e scripts do projeto;README.md: documentação técnica.
O frontend pode ser publicado em plataformas compatíveis com aplicações Vite, como a Vercel. A API Node.js pode ser hospedada em serviços como Railway, Render ou em uma VPS.
Durante a publicação, o frontend deve ser configurado para consumir a URL pública da API. O backend também precisa receber as configurações adequadas ao ambiente de hospedagem e permitir a origem utilizada pela interface.
O projeto pode ainda ser executado integralmente em ambiente local, com o frontend em http://localhost:5173 e a API em http://localhost:3000.
Natan Da Luz
- LinkedIn: linkedin.com/in/natandaluz
- Portfólio: portfolionatan.vercel.app
- E-mail: natandaluz01@gmail.com
Este projeto está sem uma licença definida no momento.


