Amazon is one of the most scraped e-commerce sites. This guide shows you how to effectively extract product data, pricing, reviews, and search results using Firecrawl’s powerful features.
Setup
npm install firecrawl zod
Overview
When scraping Amazon, you’ll typically want to:
- Extract product information (title, price, availability)
- Get customer reviews and ratings
- Monitor price changes
- Search for products programmatically
- Track competitor listings
Scrape with JSON Mode
Extract structured product data using Zod schemas.
import { Firecrawl } from 'firecrawl';
import { z } from 'zod';
// Define Zod schema
const ProductSchema = z.object({
title: z.string(),
price: z.string(),
rating: z.number(),
availability: z.string(),
features: z.array(z.string())
});
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const result = await firecrawl.scrape('https://www.amazon.com/dp/B0DZZWMB2L', {
formats: [{
type: 'json',
schema: z.toJSONSchema(ProductSchema)
}],
});
// Parse and validate with Zod
const jsonData = typeof result.json === 'string' ? JSON.parse(result.json) : result.json;
const validated = ProductSchema.parse(jsonData);
console.log('✅ Validated product data:');
console.log(validated);
Search
Find products on Amazon.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const searchResult = await firecrawl.search('gaming laptop site:amazon.com', {
limit: 10,
sources: [{ type: 'web' }], // { type: 'news' }, { type: 'images' }
scrapeOptions: {
formats: ['markdown']
}
});
console.log(searchResult);
Scrape
Scrape a single Amazon product page.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const result = await firecrawl.scrape('https://www.amazon.com/ASUS-ROG-Strix-Gaming-Laptop/dp/B0DZZWMB2L', {
formats: ['markdown'], // i.e. html, links, etc.
onlyMainContent: true
});
console.log(result);
Map
Discover all available URLs on Amazon product or category pages. Note: Map returns URLs only, without content.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const mapResult = await firecrawl.map('https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics');
console.log(mapResult.links);
// Returns array of URLs without content
Crawl
Crawl multiple pages from Amazon category or search results.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const crawlResult = await firecrawl.crawl('https://www.amazon.com/s?k=mechanical+keyboards', {
limit: 10,
scrapeOptions: {
formats: ['markdown']
}
});
console.log(crawlResult.data);
Batch Scrape
Scrape multiple Amazon product URLs simultaneously.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
// Wait for completion
const job = await firecrawl.batchScrape([
'https://www.amazon.com/ASUS-ROG-Strix-Gaming-Laptop/dp/B0DZZWMB2L',
'https://www.amazon.com/Razer-Blade-Gaming-Laptop-Lightweight/dp/B0FP47DNFQ',
'https://www.amazon.com/HP-2025-Omen-Gaming-Laptop/dp/B0FL4RMGSH'],
{
options: {
formats: ['markdown']
},
pollInterval: 2,
timeout: 120
}
);
console.log(job.status, job.completed, job.total);
console.log(job);