Back to Strategic Insights
    Tutorial
    Jan 22, 20266 min read

    How to Do Bulk Product Lookups with the EcomSource API

    ES

    EcomSource Team

    Product Intelligence Analysts

    Looking up products one at a time works for small-scale applications, but what if you need to process thousands or millions of identifiers? Here's how to use EcomSource's batch capabilities for maximum throughput.

    Batch Endpoint

    The v2 API supports batch requests of up to 100 identifiers per call:

    POST /api/v2/products/batch
    {
      "identifiers": [
        { "value": "B08N5WRWNW", "type": "asin" },
        { "value": "194252017883", "type": "upc" },
        { "value": "B09V3KXJPB", "type": "asin" }
      ]
    }

    Async Processing Pattern

    For very large datasets (10K+ products), use an async worker pattern:

    Step 1: Queue Your Requests Split your identifier list into chunks of 100 and add them to a processing queue.

    Step 2: Process in Parallel Run multiple workers that pull from the queue and call the batch endpoint. We recommend 5-10 concurrent workers to stay within rate limits.

    Step 3: Collect Results Store results in your database as they come back. Track which batches succeeded and which need retry.

    Rate Limiting

    • Free: 10 requests/minute
    • Starter: 60 requests/minute
    • Pro: 200 requests/minute
    • Enterprise: Custom limits

    Performance Tips

    1. 1Use batch endpoints: 1 batch request of 100 items is faster than 100 individual requests
    2. 2Implement caching: Product identifiers rarely change — cache results for 24-48 hours
    3. 3Handle errors gracefully: Some identifiers may not have matches. Don't let one failure stop the entire batch
    4. 4Monitor throughput: Track your requests per minute to optimize worker count

    Example: Processing a CSV of 50,000 ASINs

    const BATCH_SIZE = 100;

    async function processCSV(asins) { const batches = chunk(asins, BATCH_SIZE); const results = []; for (let i = 0; i < batches.length; i += CONCURRENT_WORKERS) { const concurrent = batches.slice(i, i + CONCURRENT_WORKERS); const batchResults = await Promise.all( concurrent.map(batch => lookupBatch(batch)) ); results.push(...batchResults.flat()); } return results; } ```

    With this approach, 50,000 ASINs can be processed in under 10 minutes on a Pro plan.

    Ready to leverage enterprise data?

    Join 5,000+ sellers and developers using EcomSource.ai to power their e-commerce intelligence.

    Start Free Trial

    No credit card required • Infinite scale • 1.6B+ Products

    Expand Your Knowledge

    View all insight →