Documentation IndexFetch the complete documentation index at: /llms.txtUse this file to discover all available pages before exploring further.
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Etsyマーケットプレイスからハンドメイド商品、ショップデータ、価格を抽出する
npm install firecrawl zod
import { Firecrawl } from 'firecrawl'; import { z } from 'zod'; // Zodスキーマを定義 const ListingSchema = z.object({ title: z.string(), price: z.string(), shopName: z.string(), rating: z.number() }); const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY }); const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/handmade-925-sterling-silver-jewelry-set', { formats: [{ type: 'json', schema: z.toJSONSchema(ListingSchema) }], }); // Zodでパースして検証 const jsonData = typeof result.json === 'string' ? JSON.parse(result.json) : result.json; const validated = ListingSchema.parse(jsonData); console.log('✅ 検証済み出品データ:'); console.log(validated);
import { Firecrawl } from 'firecrawl'; const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY }); const searchResult = await firecrawl.search('handmade jewelry site:etsy.com', { limit: 10, sources: [{ type: 'web' }], // { type: 'news' }, { type: 'images' } scrapeOptions: { formats: ['markdown'] } }); console.log(searchResult);
import { Firecrawl } from 'firecrawl'; const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY }); const result = await firecrawl.scrape('https://www.etsy.com/listing/1844315896/handmade-925-sterling-silver-jewelry-set', { formats: ['markdown'], // 例: html, links など onlyMainContent: true }); console.log(result);
import { Firecrawl } from 'firecrawl'; const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY }); const mapResult = await firecrawl.map('https://www.etsy.com/shop/YourShopName'); console.log(mapResult.links); // コンテンツなしでURLの配列を返します
import { Firecrawl } from 'firecrawl'; const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY }); const crawlResult = await firecrawl.crawl('https://www.etsy.com/c/jewelry', { limit: 10, scrapeOptions: { formats: ['markdown'] } }); console.log(crawlResult.data);
import { Firecrawl } from 'firecrawl'; const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY }); // 完了を待つ const job = await firecrawl.batchScrape([ 'https://www.etsy.com/listing/1844315896/handmade-925-sterling-silver-jewelry-set', 'https://www.etsy.com/market/handmade_jewelry', 'https://www.etsy.com/market/jewelry_handmade'], { options: { formats: ['markdown'] }, pollInterval: 2, timeout: 120 } ); console.log(job.status, job.completed, job.total); console.log(job);