# Zauba Trade Data Scraper: India Import Export (`getascraper/zauba-trade-data-scraper`) Actor

Scrape India customs shipment records from zauba.com by product keyword or HS code, for import or export trade. Get product description, quantity, unit price, and total value in native USD, plus origin country and port. Retries tuned to survive Cloudflare. No fabricated importer or exporter data.

- **URL**: https://apify.com/getascraper/zauba-trade-data-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.23 / 1,000 shipment records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Zauba Trade Data Scraper: India Import Export

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EEF2F6;border:1px solid #C3CEDA;border-top:4px solid #1D3557;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Get India import and export shipment data from zauba.com without runs stalling out.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search any HS code or product keyword and pull shipment dates, ports, quantities, and USD values straight off zauba.com, tuned to get through the site's bot check instead of timing out partway.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C3CEDA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1D3557">🛡️ Built to survive the block wall</span><br>
<span style="font-size:12px;color:#57534E">Tuned against zauba.com's real anti-bot check so your search finishes instead of dying partway through.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C3CEDA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1D3557">✅ Only real fields, nothing invented</span><br>
<span style="font-size:12px;color:#57534E">Every row uses fields zauba.com actually publishes. No guessed importer names, no fake currency math.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C3CEDA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1D3557">🔎 Search by HS code or keyword</span><br>
<span style="font-size:12px;color:#57534E">Enter an HS code or a plain product term and get matching shipment records back in the same run.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C3CEDA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1D3557">🔁 Ready to monitor on a schedule</span><br>
<span style="font-size:12px;color:#57534E">Turn on new-shipment tracking so a recurring run only returns records you have not seen before.</span>
</td>
</tr>
</table>

**Zauba Trade Data Scraper** pulls India customs shipment records from [zauba.com](https://www.zauba.com) by HS code or product keyword, without you having to fight the site's bot defenses by hand. Search once and get product descriptions, shipment dates, origin countries, ports of discharge, quantities, and USD pricing back as clean rows, ready to schedule, filter, and export from Apify.

### 🔍 What does it do?

This actor submits an HS code or product keyword search on zauba.com and returns the resulting page of India import or export shipment records. Each record includes the HS code and its category description, a free-text product description, the shipment date, origin country, port of discharge, quantity and unit, and the unit price and total value in US dollars, exactly as zauba.com publishes them.

zauba.com fronts a genuine bot check that blocks a large share of automated requests outright. This actor is built and retried against that real failure pattern, so a search has a strong chance of coming back with results instead of an empty run. Run it on demand from the Apify Console or API, or schedule it to check for new shipments on a recurring basis.

### 💡 Why use it?

- **I am a sourcing manager** comparing average unit prices and ports of discharge for a product category before committing to a new India supplier, so I can negotiate from real shipment data instead of a quote sheet.
- **I am a market researcher** tracking which HS codes are moving through Indian ports each month to build a trade trend report for my clients.
- **I am a lead-gen consultant** building a list of active India import and export categories by HS code and shipment value, to hand off to my sales team as warm outreach targets.

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EEF2F6;border:1px solid #C3CEDA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1D3557;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your search</span><br>
<span style="font-size:12px;color:#57534E">Enter an HS code or a product keyword, and choose import or export.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2F6;border:1px solid #C3CEDA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1D3557;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Let it work through the block</span><br>
<span style="font-size:12px;color:#57534E">The actor pushes past zauba.com's bot check with a generous retry allowance so your search actually completes.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF2F6;border:1px solid #C3CEDA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1D3557;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get clean shipment rows</span><br>
<span style="font-size:12px;color:#57534E">Download dates, ports, countries, quantities, and USD values ready for your spreadsheet or CRM.</span>
</td>
</tr>
</table>

1. Open the actor and choose **Import** or **Export** as the trade type.
2. Enter an HS code (e.g. `85171290`) or a product keyword (e.g. `mobile phone`) in the search fields. You can also paste direct zauba.com category or HS-code page URLs into Start URLs instead.
3. Click **Start**. The run submits your search on zauba.com and, once through the site's check, saves each matching shipment record to the dataset.
4. Export the dataset as JSON, CSV, or Excel, or pull it through the Apify API into your own tools.

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `startUrls` | array of URLs | No | Direct zauba.com category or HS-code page URLs, copied from a link on zauba.com's own filter list. When set, these are fetched as-is and the trade type, HS code, and product keyword fields below are ignored. |
| `tradeType` | enum | No | Scrape import shipment records or export shipment records. Only used when Start URLs is empty. Defaults to `import`. |
| `hsCode` | string | No | Harmonized System code to search for, e.g. `85176290`. zauba.com's search uses one shared field for either an HS code or a keyword. If both this and Product Keyword are set, HS Code wins. |
| `productKeyword` | string | No | Free-text product description to search for, e.g. `mobile phone`. Used only when HS Code is empty. |
| `maxItems` | integer | No | Maximum number of shipment records to return. zauba.com's free tier caps any single search at roughly 20 results, so values above that will not produce more results from one query. Defaults to `20`. |
| `maxRequestRetries` | integer | No | How many times to retry a request after a failed bot check before giving up. zauba.com's check does not pass on every attempt, so a healthy retry budget matters more here than on most sites. Defaults to `8`. |
| `maxConcurrency` | integer | No | Maximum number of parallel requests. Keep this low, since a single search only ever returns one page of results and higher concurrency will not speed that up. Defaults to `2`. |
| `requestDelaySecs` | integer | No | Minimum pacing delay enforced between requests, on top of the actor's built-in adaptive throttling. Defaults to `3`. |
| `proxyConfiguration` | object | No | Proxy settings. A specific Apify proxy type built to get through strong bot checks is set by default, since this site blocks standard proxy types on the very first request. Leave this on the default unless you know what you are changing. |
| `onlyNewShipments` | boolean | No | When enabled, the first run builds a baseline of shipments already seen. Later runs using the same Monitoring State Key return only shipments not seen before, turning repeated runs into a new-shipments feed. Defaults to `false`. |
| `monitoringStateKey` | string | No | Identifies the seen-shipments baseline. Use a distinct key per saved search or schedule so separate monitors do not share state. Defaults to `default`. |
| `resetSeenShipments` | boolean | No | Clears the stored baseline for the given Monitoring State Key before this run, so all matching shipments count as new again. Defaults to `false`. |

### 📤 Output

Every shipment record is saved as a single dataset item. You can download the dataset in JSON, CSV, HTML, or Excel format, or pull it directly through the Apify API.

```json
{
  "shipmentId": "a1f9c2e7d0b34f56",
  "tradeType": "import",
  "hsCode": "85171290",
  "hsCodeDescription": "Telephones for cellular networks or Other",
  "productDescription": "Mobile phone parts and accessories",
  "dateIso": "2016-11-22",
  "countryOfOrigin": "China",
  "portOfDischarge": "Nhava Sheva Sea",
  "quantity": 500,
  "unit": "PCS",
  "unitPriceUsd": 12.45,
  "totalValueUsd": 6225,
  "currency": "USD",
  "sourceUrl": "https://www.zauba.com/import-mobile+phone/hs-code-85171290-hs-code.html",
  "scrapedAt": "2026-08-23T09:12:44.000Z"
}
```

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `shipmentId` | string | Identifier generated for the record from its own contents, used to detect duplicates across monitoring runs. |
| `tradeType` | string | `import` or `export`. |
| `hsCode` | string | Harmonized System code for the shipment. |
| `hsCodeDescription` | string | Category description tied to the HS code, as published on zauba.com. |
| `productDescription` | string | Free-text description of the goods for this shipment. |
| `dateIso` | string | Shipment date in ISO 8601 format. |
| `countryOfOrigin` | string | Country the goods shipped from. |
| `countryOfDestination` | string | Country the goods shipped to, when present on the source page. |
| `portOfDischarge` | string | Indian port where the shipment was discharged (imports) or loaded from (exports), as labeled on the page. |
| `portOfLoading` | string | Port of loading, when present on the source page. |
| `quantity` | number | Quantity shipped. |
| `unit` | string | Unit of measure for the quantity, e.g. `PCS`, `KGS`. |
| `unitPriceUsd` | number | Price per unit in US dollars, as published by zauba.com. |
| `totalValueUsd` | number | Total shipment value in US dollars, as published by zauba.com. |
| `currency` | string | Always `USD`. zauba.com publishes values in dollars natively; no conversion is performed. |
| `sourceUrl` | string | zauba.com page the record was read from. |
| `scrapedAt` | string | Timestamp of when the actor collected the record. |

### 💰 Pricing

Pricing is pay per result and is billed per shipment record successfully saved to your dataset. Empty runs cost absolutely nothing.

- No fixed monthly subscriptions or hidden maintenance fees.
- You only pay for shipment records that actually land in your dataset, not for time spent working through zauba.com's bot check.
- Check the **Pricing** tab on this actor's Store page for the current rate.

### ⭐ Enjoying Zauba Trade Data Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EEF2F6;border:1px solid #C3CEDA;border-left:5px solid #1D3557;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">A run that actually finishes beats a cheaper one that does not.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other sourcing managers and trade researchers find a Zauba scraper that gets through. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1D3557;border:1px solid #C3CEDA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/devansh-365/zauba-trade-data-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this actor on Apify</a>
</td>
</tr>
</table>

### 🛠️ Tips for better results

- zauba.com only exposes the first page of any search (roughly 20 records) to visitors who are not logged in, and this actor does not attempt to log in. If you need more coverage of one topic, run several narrower searches (different HS codes or more specific keywords) instead of raising Max Shipment Records past 20.
- Keep Max Concurrency low. A single search only ever returns one page of results, so running more requests in parallel adds cost without adding data.
- If a run comes back empty, try again. zauba.com's bot check does not pass on every attempt, and the built-in retry budget is tuned for exactly this, but a very unlucky run can still exhaust its retries.
- Use the Monitoring section (`onlyNewShipments`, `monitoringStateKey`) to turn a recurring schedule into a feed of newly filed shipments instead of re-collecting the same records every time.

### ❓ FAQ

##### Does it get blocked by zauba.com?

zauba.com runs a strong bot check that blocks a large share of automated requests outright. This actor is tuned against that real failure pattern with a generous retry allowance and a long wait time per attempt, so a search has a good chance of coming back with results instead of stalling out. No scraper can guarantee 100 percent success against a check like this, but this one is built and tested specifically to survive it.

##### Does it extract importer, exporter, or supplier names?

No. zauba.com's free results page does not publish importer, exporter, or supplier names for any shipment record, and this actor never invents or guesses them. If a field is not actually present on the page, it is left out of the dataset entirely rather than filled with a placeholder.

##### Why do I only get about 20 results per search?

zauba.com itself only shows the first page of results, roughly 20 shipment records, to visitors who are not logged in. Viewing further pages requires a zauba.com account, which this actor does not use. This is a limit set by zauba.com, not a limit added by this actor. Narrow your search with a more specific HS code or product keyword to get a more focused set of matches.

##### Are the prices in US dollars or Indian rupees?

US dollars. zauba.com publishes unit price and total value in USD directly on its results page, and this actor copies those figures as they appear. No currency conversion is performed and no rupee figures exist on the source page.

### 🔗 Other actors

- [US HTS Tariff Monitor: Official Line Changes](https://apify.com/devansh-365/us-hts-tariff-monitor) ↗ - tracks official US tariff schedule line changes for import and customs teams.
- [India Job Inventory Feed: भारत Jobs](https://apify.com/devansh-365/india-job-inventory-feed) ↗ - aggregates job postings across India's major job boards into one feed.
- [SAM.gov Contract Monitor: Federal Opportunities Scraper](https://apify.com/devansh-365/sam-gov-contract-monitor) ↗ - monitors new US federal contract opportunities for government sales teams.
- [UAE Industrial Licence Monitor: بيانات الموردين](https://apify.com/devansh-365/uae-industrial-licence-monitor) ↗ - tracks newly issued UAE industrial licences for supplier and lead intelligence.
- [China Recall Scraper: 中国缺陷产品召回](https://apify.com/devansh-365/china-samr-product-recall-scraper) ↗ - monitors official Chinese product recall notices by category.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more zauba.com "page 1" category or HS-code result URLs (e.g. https://www.zauba.com/import-mobile+phone/hs-code-85171290-hs-code.html), copied directly from a link on zauba.com's own left-hand HS-code filter list. These are fetched exactly as given (no search form submission). If left empty, the scraper submits the search form using the filters below instead.

## `tradeType` (type: `string`):

Scrape import shipment records or export shipment records. Only used when Start URLs are empty (ignored for pasted Start URLs, which already encode import vs export in their path).

## `hsCode` (type: `string`):

Harmonized System code to search for (e.g. 85176290). zauba.com's live search form has a single free-text field that accepts either a product keyword or an HS code, not separate fields for each — if both HS Code and Product Keyword are set, HS Code is used and Product Keyword is ignored.

## `productKeyword` (type: `string`):

Free-text product description search (e.g. 'mobile phone'). Used only when HS Code is empty.

## `maxItems` (type: `integer`):

Maximum number of shipment records to scrape. IMPORTANT: zauba.com only exposes the first ~20 results of any search for free — viewing further pages requires a logged-in zauba.com account, which this Actor does not support. Set this to 20 or less; a higher value will not produce more results from a single query.

## `proxyConfiguration` (type: `object`):

zauba.com is protected by a genuine Cloudflare JS challenge (confirmed via direct testing: DATACENTER and RESIDENTIAL proxy groups both receive a "cf-mitigated: challenge" 403 on every request). Only Apify's UNBLOCKER proxy group — purpose-built to solve JS/anti-bot challenges, not just rotate IP reputation — gets through. Do not switch this to RESIDENTIAL or DATACENTER; it will fail on the very first request.

## `maxRequestRetries` (type: `integer`):

How many times to retry a request after a failed anti-bot challenge before giving up. zauba.com sits behind a genuine Cloudflare JS challenge; even through Apify's UNBLOCKER proxy, roughly 1 in 3-4 attempts succeeds, so a healthy retry budget matters more here than for most targets.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel requests. Keep this LOW (1-3) — the UNBLOCKER proxy's challenge-solving is resource-intensive per request, and higher concurrency does not speed up a single search (which returns at most one page of results).

## `requestDelaySecs` (type: `integer`):

Minimum pacing delay enforced between requests on the same session, in addition to Crawlee's built-in adaptive throttling.

## `onlyNewShipments` (type: `boolean`):

When enabled, the first run builds a baseline of seen shipment IDs. Later runs with the same Monitoring State Key only output shipments not seen before, turning this into an incremental feed for scheduled/recurring runs. Note the free-tier ~20-row cap per query limits how much new data any single run can discover.

## `monitoringStateKey` (type: `string`):

Identifies the seen-shipments baseline in the key-value store. Use a distinct key per saved query/schedule so multiple monitors do not share state.

## `resetSeenShipments` (type: `boolean`):

Clear the stored baseline for the given Monitoring State Key before this run, so all matching shipments are treated as new again.

## Actor input object example

```json
{
  "startUrls": [],
  "tradeType": "import",
  "hsCode": "",
  "productKeyword": "",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ],
    "apifyProxyCountry": "IN"
  },
  "maxRequestRetries": 8,
  "maxConcurrency": 2,
  "requestDelaySecs": 3,
  "onlyNewShipments": false,
  "monitoringStateKey": "default",
  "resetSeenShipments": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/zauba-trade-data-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
        "apifyProxyCountry": "IN",
    } }

# Run the Actor and wait for it to finish
run = client.actor("getascraper/zauba-trade-data-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call getascraper/zauba-trade-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/zauba-trade-data-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hJW6D9t4Pn3zEhi0p/builds/bcEK9WIcG9MkFw7e5/openapi.json
