# ImportYeti Scraper - US Imports, Suppliers & Bills of Lading (`scrapewise/importyeti-scraper`) Actor

Scrape ImportYeti without login: US importers and overseas suppliers by name or address, full trade profiles (top partners, HS codes, ports, carriers), trading partners and recent bills of lading. No emails or phones. From US$ 2 per 1,000 rows.

- **URL**: https://apify.com/scrapewise/importyeti-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 row delivereds

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 import records, suppliers, trading partners and bills of lading

Scrape [ImportYeti](https://www.importyeti.com/) (US customs bill-of-lading data) **without an account, cookies or a
browser**. Search US importers and overseas suppliers **by name or by address**, open any company or supplier page
and get its **full trade profile in one row**: total ocean shipments, first and last shipment, shipments in the last
12 months, the **top 50 suppliers (or customers)** with their shipment counts, weight, TEU and HS codes, HS and HTS
code breakdown, **shipping lanes** (port to port), **carriers (SCAC)**, notify parties and the **50 most recent bills
of lading**. Or get the same data as flat rows: one row per trading partner, or one row per shipment.

Built for sourcing teams looking for a competitor's factories, Amazon and DTC sellers vetting suppliers, freight
forwarders and customs brokers mapping who ships what, supply-chain and UFLPA risk analysts, and market researchers.

**From US$ 2.00 per 1,000 rows. Full profiles US$ 3.00 per 1,000. No start fee, no monthly fee. Error rows,
duplicates and rows outside your filters are free.**

No emails and no phone numbers are ever returned: this Actor delivers company trade data, not contact lists.

### At a glance

- **Price, Free plan:** US$ 2.00 / 1,000 rows; full profile US$ 3.00 / 1,000
- **Fee per run start:** None
- **Search by company name:** Yes
- **Search by address:** Yes
- **Full profile in one row:** Yes
- **One row per trading partner:** Yes
- **One row per bill of lading:** Yes
- **Filters: importer/supplier, country, min shipments:** Yes, filtered rows are free
- **Emails / phone numbers:** Never returned
- **Resumes after a platform restart without charging twice:** Yes

### What you can do with it

- **Find a competitor's factories.** Search the brand, open the importer profile and read its top 50 suppliers with
  country, shipment count, weight, HS codes, first and last shipment date.
- **Vet a supplier before you wire money.** Open the supplier page: how long it has been shipping to the US, how many
  shipments in the last 12 months, who its US customers are, which ports it ships from.
- **Map an industrial zone.** Search an address ("shenzhen longhua", "ho chi minh") and list every importer and supplier
  registered there.
- **Feed a spreadsheet or CRM.** Pick "Trading partners" or "Recent bills of lading" for flat rows with no nested
  lists. Export as CSV, Excel, JSON or through the API.
- **Watch companies over time.** Schedule the same links weekly and compare `lastShipmentDate`,
  `shipmentsLast12Months` and the partner list.

### Input

| Field | What it does |
|---|---|
| `searchTerms` | Company or supplier names, one per line (walmart, hon hai, yeti coolers). |
| `urls` | ImportYeti pages: `https://www.importyeti.com/company/apple`, `supplier/foxconn-interconnect-technology` or `company/apple`. |
| `addressSearch` | Address text, one per line. Finds the companies registered there. |
| `resultType` | `profiles` (default), `searchResults`, `partners` or `shipments`. |
| `maxResultsPerSearch` | Hits taken from each search, in ImportYeti's order. Default 10, up to 1,000. |
| `maxItems` | Hard cap on charged rows for the whole run. |
| `entityType` | `all`, `company` (US importers) or `supplier` (overseas shippers). Applies to search hits. |
| `countries` | Two-letter codes (US, CN, VN, IN...). Hits from other countries are skipped for free. |
| `minShipments` | Skip search hits with fewer total shipments. |

Example: the top 5 US importers named "furniture" with more than 100 shipments, one row per supplier.

```json
{
  "searchTerms": ["furniture"],
  "entityType": "company",
  "minShipments": 100,
  "maxResultsPerSearch": 5,
  "resultType": "partners"
}
```

An empty input runs a small example (3 profiles for "yeti coolers"), so the Actor never fails on a blank form.

### Output

#### Full profile (`resultType: profiles`), one real row, shortened

From a local test run on 2026-09-29 with `"urls": ["https://www.importyeti.com/company/apple"]`. Lists are cut to
their first element here; the real row has up to 50 partners and 50 recent shipments.

```json
{
  "type": "company",
  "name": "Apple",
  "alsoKnownAs": ["Apple Aps", "Apple Inc"],
  "url": "https://www.importyeti.com/company/apple",
  "address": "568 Aldi Blvd, Mount Juliet, Tn 37122, Us",
  "city": "Mount Juliet",
  "region": "Tennessee",
  "countryCode": "US",
  "country": "United States of America",
  "website": "apple.com",
  "totalShipments": 2443,
  "shipmentsLast12Months": 4,
  "firstShipmentDate": "2015-03-25",
  "lastShipmentDate": "2026-01-21",
  "estimatedTotalShippingCostUsd": 1621252.0,
  "fclSharePercent": 93.57,
  "lclSharePercent": 6.43,
  "partnerRole": "supplier",
  "partnersShown": 50,
  "topPartners": [
    {
      "name": "Hon Hai Precision Industrial",
      "url": "https://www.importyeti.com/supplier/hon-hai-precision-industrial",
      "country": "China",
      "countryCode": "CN",
      "address": "10Th Indl Dist N 2 Donghuan Rd Long Hua Baoan Shenzhen Gd Cn",
      "totalShipments": 866,
      "shipmentsLast12Months": 0,
      "totalWeightKg": 3373940.0,
      "totalTeu": 1491.0,
      "hsCodes": ["8504.40", "8517.62", "8471.30", "8544.42", "8473.30"],
      "firstShipmentDate": "2015-04-01",
      "lastShipmentDate": "2022-10-01",
      "sameGroup": false,
      "uflpaFlag": false
    }
  ],
  "hsCodes": [{"hsCode": "85", "description": "Electric motors/Appliances", "shipments": 1186, "weightKg": 5464266.0, "teu": 2010.0, "subCodes": [{"hsCode": "8517", "shipments": 553}]}],
  "carriers": [{"scac": "FTNV", "name": "Fedex Trade Networks Transport & Brokerage", "shipments": 1666, "shipmentsLast12Months": 0}],
  "shippingLanes": [{"exitPort": "Hong Kong", "exitCountry": "Hong Kong S.A.R.", "entryPort": "Los Angeles, Ca", "entryCountry": "United States of America", "shipments": 607}],
  "notifyParties": [{"name": "Apple", "url": "https://www.importyeti.com/notify-party/apple", "shipments": 394, "sameGroup": true}],
  "recentShipments": [{"date": "2026-01-21", "billOfLading": "SHPT012025121832", "partnerName": "Galan Textile Machinery Sl", "partnerCountry": "Spain", "description": "Double Twisting Machine Bobbins First Twist Overhead Creel Winding Machine", "weightKg": 690.0, "containers": 1}],
  "uflpaFlag": false,
  "source": "url:company/apple",
  "scrapedAt": "2026-09-29T20:54:40Z",
  "errorCode": null
}
```

#### One bill of lading (`resultType: shipments`)

```json
{
  "type": "shipment",
  "profileName": "Yeti Coolers",
  "profileUrl": "https://www.importyeti.com/company/yeti-coolers",
  "profileType": "company",
  "date": "2025-02-25",
  "billOfLading": "DFDSUDF0146764",
  "masterBol": "MEDUYR467893",
  "houseBol": "DFDSUDF0146764",
  "billType": "house",
  "partnerName": "Jiangmen City Deyibao Stainless Ste",
  "partnerUrl": "https://www.importyeti.com/supplier/jiangmen-city-deyibao-stainless-ste",
  "description": "Yeti Ice Scoop",
  "weightKg": 397.0,
  "containers": 1,
  "quantity": 21,
  "quantityUnit": "CTN",
  "shippingRoute": "Asia,Pacific",
  "estimatedShippingCostUsd": 5406.0,
  "source": "search:yeti coolers"
}
```

#### Trading partner (`resultType: partners`) and search result (`resultType: searchResults`)

Partner rows carry the profile (`profileName`, `profileUrl`, `profileType`, `partnerRole`) plus every partner field
with a `partner` prefix (`partnerName`, `partnerCountry`, `partnerTotalShipments`, `partnerHsCodes`,
`partnerLastShipmentDate`...). Search rows are light: `name`, `entityType`, `countryCode`, `address`,
`totalShipments`, `mostRecentShipment`, `url`, `searchTerm`, `position`.

#### Error rows (never charged)

| errorCode | When |
|---|---|
| `NOT_FOUND` | The ImportYeti page does not exist. |
| `INVALID_URL` | The link is not an ImportYeti company or supplier page. |
| `NO_RESULTS` | The search found nothing. |
| `NO_DATA` | The page opened without trade data (retry later). |
| `BLOCKED` | ImportYeti refused every attempt for that request. |
| `NOT_REACHED` | The run timeout arrived before this item. |
| `INVALID_INPUT` | A field has a value the Actor cannot use (the message says which). |
| `UNEXPECTED` | Anything else; the rest of the run continues. |

### Pricing

Pay per event, no start fee:

| Event | Price per 1,000 (Free plan) | Charged for |
|---|---|---|
| Row delivered | **US$ 2.00** | each search result row, trading-partner row or bill-of-lading row |
| Full profile delivered | **US$ 3.00** | each company or supplier profile row |

Examples: 100 full profiles cost US$ 0.30. The top 50 suppliers of 20 importers (1,000 partner rows) cost US$ 2.00.
A 1,000-row search-results list costs US$ 2.00. Error rows, duplicates and filtered-out hits are free, and
`maxItems` is a hard stop.

### How it works and limits

- It reads the same pages and search endpoint the ImportYeti website uses, over plain HTTP, through the Apify
  datacenter proxy with a fresh IP for every page. No login, no browser.
- ImportYeti shows the **top 50 partners** and the **50 most recent bills of lading** on each page; that is what this
  Actor returns. Older individual shipments are behind ImportYeti's paid plans and are not scraped.
- Search is by **name** or **address**, like the ImportYeti search box. Product-description search is not offered.
- Dates are ISO (`YYYY-MM-DD`). Shipping cost is ImportYeti's own estimate (`shippingCostCoveragePercent` tells how
  many shipments it covers).
- Data is only as good as the customs manifests: some shippers are recorded as "missing in source document" (returned
  as `null`), and some companies ask US Customs for manifest confidentiality.
- **Contact data is removed on purpose.** Emails, phone numbers and contact blocks on the page are never returned, and
  every text field goes through a filter that replaces any email or phone number with `[contact removed]`.

### FAQ

**Do I need an ImportYeti account?** No. Everything comes from public pages.

**Why is a full profile more expensive than a partner row?** One profile row already holds up to 50 partners, 50
shipments and all the breakdowns. If you only need one of those lists as flat rows, `partners` or `shipments` is
cheaper per useful fact.

**Can I get emails or phone numbers of the companies?** No. This Actor does not return contact data.

**What if the run is restarted by the platform?** Rows already in the dataset are not charged again: the Actor reads
its own dataset when it starts and skips what was delivered.

**How fast is it?** In our tests: 3 profiles in 3 s, 12 profiles from a search in 13 s, 50 partner rows in 2 s.

### Changelog

- **0.1 (2026-09-29):** first version: search by name and address, profiles, partners, bills of lading, filters,
  resume after restart.

Independent tool, not affiliated with ImportYeti.

# Actor input Schema

## `searchTerms` (type: `array`):

Company or supplier names, one per line (for example: walmart, hon hai, yeti coolers). ImportYeti searches US importers ('company') and overseas shippers ('supplier') by name. Each search returns up to 'Max results per search' hits.

## `urls` (type: `array`):

Company or supplier pages, one per line: https://www.importyeti.com/company/apple, https://www.importyeti.com/supplier/foxconn-interconnect-technology, or just company/apple. Each link returns one profile (or its partners / shipments, see 'What to return').

## `addressSearch` (type: `array`):

Street, city or industrial-zone text, one per line (for example: shenzhen longhua, 1710 w baseline rd). Finds the importers and suppliers registered at that address.

## `resultType` (type: `string`):

Full profiles: totals, first and last shipment, top 50 partners, HS/HTS codes, shipping lanes, carriers, notify parties and the 50 latest bills of lading, all in one row. Search results only: the cheapest way to map who exists, without opening each page. Trading partners and Recent bills of lading: the same data as flat rows, ready for a spreadsheet. Empty = Full profiles.

## `maxResultsPerSearch` (type: `integer`):

How many hits to take from each name or address search, in ImportYeti's order (10 per page). Empty = 10. In 'Trading partners' and 'Recent bills of lading' modes this is the number of profiles opened per search.

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

Hard cap on charged rows for the whole run (profiles, search rows, partner rows and shipment rows together). Empty or 0 = no cap besides the per-search limit.

## `entityType` (type: `string`):

Keep only US importers or only overseas suppliers from the searches. Links you paste are always opened. Empty = both.

## `countries` (type: `array`):

Two-letter country codes of the hit, one per line (US, CN, VN, IN, MX...). Search hits from other countries are skipped and not charged.

## `minShipments` (type: `integer`):

Skip search hits with fewer total ocean shipments on record (useful to drop one-off shippers). Not charged.

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

Apify datacenter proxy is the default and works for ImportYeti. Every page is fetched from a fresh IP; refused requests are retried on another IP.

## Actor input object example

```json
{
  "searchTerms": [
    "yeti coolers"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `resultsCsv` (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 = {
    "searchTerms": [
        "yeti coolers"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/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 = {
    "searchTerms": ["yeti coolers"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/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 '{
  "searchTerms": [
    "yeti coolers"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/importyeti-scraper --silent --output-dataset

```

## MCP server setup

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