# ImportYeti Scraper — US Customs Importer & Supplier Data (`muhammadafzal/importyeti-scraper`) Actor

Scrape ImportYeti for US customs sea shipments, foreign suppliers, buyer profiles, and ocean bills of lading without an API key. Built for sourcing & B2B leads.

- **URL**: https://apify.com/muhammadafzal/importyeti-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (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 $4.00 / 1,000 importer, supplier, or 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## ImportYeti Scraper — US Customs Importer & Supplier Data

Extract verified US Customs sea-shipment import records, overseas manufacturer networks, company profiles, and ocean bills of lading directly from ImportYeti — **with no API key, third-party credits, or subscription required**.

This Actor enables supply chain intelligence, competitor supplier mapping, overseas factory discovery, product sourcing due diligence, and high-intent B2B lead generation.

***

### Why use the ImportYeti Scraper?

- **100% Direct Scraping — No API Key Required**: ImportYeti's official API requires paid monthly credits. This Actor extracts public trade records directly through browser-grade HTTP/2 requests, eliminating third-party subscription costs.
- **Search US Importers**: Identify American corporations, e-commerce retailers, and wholesale distributors importing products via ocean freight. Search by company name, brand, or commodity keyword.
- **Search Overseas Suppliers**: Discover foreign manufacturers and exporters across China, Vietnam, India, Europe, Latin America, and 100+ countries.
- **Full Company & Supplier Profiles**: Scrape verified corporate profiles including registered business addresses, country codes, total shipment volumes, date of first/latest shipment, top trading partners, and primary Harmonized System (HTS) tariff classifications.
- **Ocean Shipment Bills of Lading (BOL)**: Extract individual sea shipment records with customs bill of lading numbers, master BOLs, arrival dates, container cargo descriptions, shipment weights in kilograms, and US ports of entry.
- **Structured, CRM-Ready Dataset**: Every record is normalized against a strict dataset schema, ready for immediate export to Google Sheets, CSV, PostgreSQL, Snowflake, HubSpot, or Salesforce.
- **Built-In Anti-Blocking**: Emulates modern Chrome TLS and HTTP/2 network signatures with automated retry mechanisms and residential proxy support to ensure reliable extraction without blocks.

***

### What data does it extract?

Every record written to the default dataset adheres to a validated schema. Fields not applicable to a specific record type are set to `null`, while the original unformatted record is retained in `sourceData` when enabled:

| Field | Type | Description | Example |
| :--- | :--- | :--- | :--- |
| `recordType` | `string` | Record category: `company_search`, `supplier_search`, `company_profile`, `supplier_profile`, or `shipment` | `"shipment"` |
| `name` | `string \| null` | Business name of the importer or supplier | `"Wal-Mart Stores Inc"` |
| `companySlug` | `string \| null` | ImportYeti unique company slug | `"wal-mart"` |
| `supplierSlug` | `string \| null` | ImportYeti unique supplier slug | `"bestway-hong-kong-international"` |
| `countryCode` | `string \| null` | Two-letter ISO country code | `"US"` |
| `address` | `string \| null` | Registered physical or mailing address | `"702 SW 8th St, Bentonville, AR 72716"` |
| `totalShipments` | `number \| null` | Total historical shipment count on file | `442496` |
| `firstShipment` | `string \| null` | Date of earliest recorded customs filing | `"01/01/2015"` |
| `mostRecentShipment` | `string \| null` | Date of most recent customs filing | `"09/24/2026"` |
| `billOfLadingNumber` | `string \| null` | US customs Bill of Lading (BOL) number | `"CCLLMILS17011590"` |
| `masterBillOfLadingNumber` | `string \| null` | Master ocean BOL identifier | `"NYKSMILT12616400"` |
| `arrivalDate` | `string \| null` | Vessel arrival date at the US port | `"08/21/2026"` |
| `companyName` | `string \| null` | US consignee / importer on the shipment | `"Ikea Supply AG"` |
| `supplierName` | `string \| null` | Overseas shipper / exporter on the shipment | `"Poliform SPA"` |
| `supplierCountry` | `string \| null` | Exporter country of origin | `"Italy"` |
| `productDescription` | `string \| null` | Cargo and commodity description filed with customs | `"Kitchen Furniture & Wooden Tables"` |
| `hsCode` | `string \| null` | Harmonized Tariff Schedule (HTS) code | `"940340"` |
| `entryPort` | `string \| null` | US customs port of entry | `"Newark, NJ"` |
| `weight` | `number \| null` | Shipment weight in kilograms | `14250` |
| `profileUrl` | `string \| null` | Direct link to the public ImportYeti profile | `"https://www.importyeti.com/company/wal-mart"` |
| `sourceEndpoint` | `string` | ImportYeti route or page scraped | `"/company/wal-mart"` |
| `sourceData` | `object \| null` | Full unnormalized raw data object (top partners, HTS codes, containers) | `{ ... }` |
| `fetchedAt` | `string` | ISO 8601 UTC timestamp of extraction | `"2026-09-28T23:45:00.000Z"` |

***

### When to use vs when not to use

#### Ideal Use Cases

- **Competitor Supplier Intelligence**: Uncover where competitors source their products, which overseas factories they contract, and how frequently they receive ocean containers.
- **Factory & Supplier Verification**: Verify claims made by overseas suppliers on Alibaba or Global Sources by reviewing their genuine US customs sea shipment history.
- **Logistics & Freight Prospecting**: Identify high-volume US importers who regularly import via ocean freight to pitch freight forwarding, customs brokerage, or 3PL fulfillment services.
- **Product Sourcing & Procurement**: Search for specific goods (e.g., "bamboo flooring", "solar inverters", "organic cotton") to find factories with established US export compliance.
- **Counterparty Due Diligence**: Confirm active corporate addresses, trade partners, and historical shipment consistency before signing vendor contracts.

#### When NOT to Use

- **Air Freight & Express Couriers**: ImportYeti tracks ocean container shipments filed with US Customs and Border Protection; small parcel air shipments (DHL, FedEx, UPS) are not covered.
- **Domestic US Land Freight**: Inter-state trucking and domestic rail shipments are not recorded in maritime customs filings.
- **Non-US Import Filings**: The database focuses on importations entering the United States; European, Canadian, or Asian internal domestic customs declarations are not included.
- **Real-Time Live Vessel Tracking**: Customs filings are recorded upon arrival and manifest clearing, not live AIS GPS coordinates.

***

### Supported Scraping Operations

| Action | Required Input | Best For | Output Records |
| :--- | :--- | :--- | :--- |
| `search_company` | `searchQuery` | Finding US buyers, importers, and brand owners by name or keyword | `company_search` |
| `search_supplier` | `searchQuery` | Finding foreign manufacturers, factories, and exporters | `supplier_search` |
| `company_profile` | `entitySlug` or `searchQuery` | Complete importer profile + top suppliers + optional recent BOL shipments | `company_profile`, `shipment` |
| `supplier_profile` | `entitySlug` or `searchQuery` | Complete supplier profile + top US buyers + optional recent BOL shipments | `supplier_profile`, `shipment` |
| `us_import_bills` | `entitySlug` or `searchQuery` | Extracting recent ocean shipment bills of lading with full cargo details | `shipment` |

***

### Input Examples

#### 1. Search US Importers by Name

Search for US corporate entities and brand names:

```json
{
  "action": "search_company",
  "searchQuery": "Walmart",
  "maxResults": 25,
  "page": 1
}
```

#### 2. Search Overseas Suppliers by Product Keyword

Discover manufacturers by product type across global supply chains:

```json
{
  "action": "search_supplier",
  "searchQuery": "solar panels",
  "maxResults": 25,
  "page": 1
}
```

#### 3. Extract Full Importer Profile with Recent Shipments

Retrieve comprehensive profile details and up to 50 recent ocean shipment bills of lading:

```json
{
  "action": "company_profile",
  "entitySlug": "wal-mart",
  "extractShipments": true,
  "maxResults": 50,
  "includeSourceData": false
}
```

#### 4. Extract Customs Bills of Lading (BOL)

Directly extract ocean cargo manifests, entry ports, cargo descriptions, and foreign shippers:

```json
{
  "action": "us_import_bills",
  "entitySlug": "ikea-supply",
  "maxResults": 50
}
```

***

### Programmatic Usage & API Integration

#### Apify Python SDK

```python
from apify_client import ApifyClient

## Initialize the client with your Apify API token
client = ApifyClient("YOUR_APIFY_TOKEN")

## Run the ImportYeti Scraper
run = client.actor("muhammadafzal/importyeti-scraper").call(run_input={
    "action": "search_company",
    "searchQuery": "Costco",
    "maxResults": 20,
})

## Fetch results from the default dataset
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"Company: {item.get('name')} | Total Shipments: {item.get('totalShipments')} | Address: {item.get('address')}")
```

#### Apify JavaScript / TypeScript SDK

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('muhammadafzal/importyeti-scraper').call({
    action: 'company_profile',
    entitySlug: 'nike',
    extractShipments: true,
    maxResults: 25,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} records:`, items);
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/muhammadafzal~importyeti-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "search_supplier",
    "searchQuery": "textiles",
    "maxResults": 10
  }'
```

***

### Sample Output

```json
[
  {
    "recordType": "company_profile",
    "sourceRecordKey": "company/wal-mart",
    "name": "Wal-Mart Stores Inc",
    "companySlug": "wal-mart",
    "supplierSlug": null,
    "countryCode": "US",
    "address": "702 SW 8th St, Bentonville, AR 72716",
    "totalShipments": 442496,
    "firstShipment": "01/01/2015",
    "mostRecentShipment": "09/24/2026",
    "billOfLadingNumber": null,
    "masterBillOfLadingNumber": null,
    "arrivalDate": null,
    "companyName": "Wal-Mart Stores Inc",
    "supplierName": null,
    "supplierCountry": null,
    "productDescription": null,
    "hsCode": null,
    "entryPort": null,
    "weight": null,
    "profileUrl": "https://www.importyeti.com/company/wal-mart",
    "sourceEndpoint": "/company/wal-mart",
    "sourceData": null,
    "fetchedAt": "2026-09-28T23:45:00.000Z"
  },
  {
    "recordType": "shipment",
    "sourceRecordKey": "MEDUR4116499",
    "name": "Wal-Mart Stores Inc",
    "companySlug": "wal-mart",
    "supplierSlug": "bestway-hong-kong",
    "countryCode": "US",
    "address": "702 SW 8th St, Bentonville, AR 72716",
    "totalShipments": null,
    "firstShipment": null,
    "mostRecentShipment": null,
    "billOfLadingNumber": "MEDUR4116499",
    "masterBillOfLadingNumber": "MEDU9912041",
    "arrivalDate": "09/22/2026",
    "companyName": "Wal-Mart Stores Inc",
    "supplierName": "Bestway Hong Kong International",
    "supplierCountry": "Hong Kong",
    "productDescription": "Inflatable Swimming Pools Above Ground Pools PVC Repair Patches",
    "hsCode": "950699",
    "entryPort": "Long Beach, CA",
    "weight": 18450,
    "profileUrl": "https://www.importyeti.com/company/wal-mart",
    "sourceEndpoint": "/company/wal-mart",
    "sourceData": null,
    "fetchedAt": "2026-09-28T23:45:02.000Z"
  }
]
```

***

### Transparent Pay-per-Event Pricing

This Actor is monetized with **Pay per event (PPE)**. You pay only for successfully extracted records delivered to your dataset — never for unexpected failures or empty queries. Platform usage pass-through is disabled (`isPPEPlatformUsagePaidByUser = false`), meaning prices are all-inclusive.

| Event Name | Event Identifier | FREE Tier | BRONZE (2.5% off) | SILVER (5% off) | GOLD (20% off) | PLATINUM (20% off) | DIAMOND (20% off) |
| :--- | :--- | ---: | ---: | ---: | ---: | ---: | ---: |
| **Actor Start** | `apify-actor-start` | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
| **Dataset Record** | `apify-default-dataset-item` | $0.005 | $0.004875 | $0.00475 | $0.004 | $0.004 | $0.004 |

#### Worked Cost Examples (FREE Tier)

- **Small Test (10 results)**: $0.005 start + (10 × $0.005) = **$0.055 total**
- **Standard Prospecting (50 results)**: $0.005 start + (50 × $0.005) = **$0.255 total**
- **Bulk Lead Extraction (500 results)**: $0.005 start + (500 × $0.005) = **$2.505 total**

> \[!NOTE]
>
> - **Apify Free Plan**: Runs on verified free Apify accounts deliver up to **5 records per run**. Upgrading to an Apify paid subscription unlocks unlimited dataset items.
> - **Truthful Empty Results**: If your search returns no matching records on ImportYeti, you are charged zero dataset-item events.

***

### Run Diagnostics (`SUMMARY`)

Every run writes a diagnostic summary record to the default Key-Value Store under the key `SUMMARY`, providing execution observability:

```json
{
  "status": "DATA",
  "action": "search_company",
  "recordsReturned": 25,
  "providerCalls": 3,
  "providerCreditsUsed": null,
  "providerCreditsRemaining": null,
  "totalMatchesReported": 140,
  "requestedMaxResults": 25,
  "effectiveMaxResults": 25,
  "chargedEvents": 25,
  "warnings": [],
  "message": "Successfully scraped 25 ImportYeti record(s) in 3 request(s) without an API key.",
  "startedAt": "2026-09-28T23:45:00.000Z",
  "finishedAt": "2026-09-28T23:45:05.120Z"
}
```

***

### Scrape-First Reliability & Anti-Blocking

1. **HTTP/2 & TLS Fingerprinting**: Requests use realistic browser TLS client signatures and header order via `got-scraping` to navigate Cloudflare protection without headless browser overhead.
2. **Automatic Proxy Escalation**: Transparently routes requests through Apify residential proxies or configured proxy pools when encountering challenges.
3. **Graceful Retries**: Network hiccups and rate limits automatically back off exponentially with jitter before failing.
4. **Fast & Lightweight**: Operating entirely via HTTP streaming rather than headless Chromium keeps execution times under 10 seconds per page and memory consumption low (512 MB).

***

### Compliance & Terms of Use

This Actor processes publicly accessible US Customs ocean container manifests made available in compliance with US federal public records regulations and FOIA disclosures.

Users are responsible for ensuring their data collection activities comply with applicable regional privacy regulations (GDPR, CCPA), terms of service, and business contact compliance rules. Do not use this tool for unauthorized mass unsolicited communications or prohibited surveillance.

***

### Feedback & Support

If you encounter an issue, notice markup changes on ImportYeti, or have a feature request:

- Open an issue in the **Issues** tab on the Actor Console page.
- Contact the maintainer through your Apify Console dashboard.

# Actor input Schema

## `action` (type: `string`):

Choose the scraping operation. Search actions find US importers or overseas suppliers by name or keyword; profile actions scrape full company or supplier profiles; us\_import\_bills extracts recent shipment bills of lading.

## `searchQuery` (type: `string`):

Enter a business name, supplier name, or product keyword to search on ImportYeti (for example, Walmart, Nike, Ikea, or furniture). Required for search actions.

## `entitySlug` (type: `string`):

Use for company\_profile, supplier\_profile, or us\_import\_bills. Enter the entity slug (for example, wal-mart or bestway-hong-kong-international) or a full ImportYeti profile URL.

## `maxResults` (type: `integer`):

Maximum number of dataset records to output (1 to 100). Each search result, company profile, or shipment bill of lading counts as one record.

## `page` (type: `integer`):

Starting page for search pagination (each page contains up to 10 results). Default is 1.

## `extractShipments` (type: `boolean`):

When scraping a company or supplier profile, also extract each individual recent sea shipment as a separate dataset record. Automatically enabled for us\_import\_bills.

## `includeSourceData` (type: `boolean`):

Include the raw unnormalized search or profile data object in the sourceData output field for debugging and downstream enrichment.

## Actor input object example

```json
{
  "action": "search_company",
  "searchQuery": "Walmart",
  "entitySlug": "wal-mart",
  "maxResults": 25,
  "page": 1,
  "extractShipments": false,
  "includeSourceData": true
}
```

# Actor output Schema

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

Schema-validated company, supplier, profile, or US import bill-of-lading records.

## `summary` (type: `string`):

Run status, record count, request count, and warnings.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/importyeti-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/importyeti-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 '{}' |
apify call muhammadafzal/importyeti-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,muhammadafzal/importyeti-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/O4kJbSame8fE29pYx/builds/UiSOyBbUmImnIHANo/openapi.json
