# ImportYeti Scraper (`automation-lab/importyeti-us-import-records`) Actor

Search ImportYeti and export public US importer, supplier, shipment, address, product, HS-code, volume, and relationship records for sourcing intelligence.

- **URL**: https://apify.com/automation-lab/importyeti-us-import-records.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business, Lead generation
- **Stats:** 3 total users, 2 monthly users, 87.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 item extracteds

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

## ImportYeti Scraper

Search ImportYeti and export public US importer, foreign supplier, shipment, product, HS-code, address, volume, and supplier-relationship records.

ImportYeti Scraper turns public trade pages into normalized JSON and CSV-ready rows for sourcing intelligence. Start with an importer or supplier name, a product keyword, a known profile URL, or a two-, four-, or six-digit HS code.

The Actor uses a stable US residential browser session. It handles the source's browser verification, reuses one session across the run, and saves only useful records.

### What does ImportYeti Scraper do?

The Actor supports three workflows:

1. Search company and supplier profiles by free text.
2. Expand a public importer or supplier profile into relationships and recent shipments.
3. Research recent bill-of-lading activity in an HS-code context.

A run can return five normalized record types:

- `search_result`
- `profile`
- `relationship`
- `shipment`
- `hs_code_summary`

Every row includes a public `sourceUrl` and `scrapedAt` timestamp.

### Who is this ImportYeti scraper for?

#### Sourcing and procurement teams

Find suppliers connected to a known US importer. Compare displayed shipment volumes, products, countries, and HS codes before qualification.

#### Supply-chain analysts

Export recent shipments with dates, bill numbers, weights, quantities, containers, and trade-lane context.

#### Competitive-intelligence teams

Search a brand or importer, preserve its public profile URL, and snapshot displayed relationships over time.

#### Trade and tariff researchers

Start with an HS code and collect recent cargo descriptions and trading-party context for downstream analysis.

#### B2B data teams

Load normalized search and relationship records into spreadsheets, CRMs, data warehouses, or scheduled pipelines.

### Why use this Actor?

- Search by company, supplier, brand, or product wording.
- Filter search results to companies or suppliers.
- Accept canonical company, supplier, and HS-code URLs.
- Resolve bare two-, four-, and six-digit HS codes.
- Export linked profiles, relationships, and shipments.
- Preserve addresses, countries, dates, volumes, product descriptions, and source URLs.
- Bound search results, expanded profiles, and total records.
- Use one coherent browser session instead of opening an unrelated session for every page.
- Fail clearly when browser verification or input validation prevents useful output.

No ImportYeti login is requested or stored.

### What data can you extract?

| Record | Important fields |
| --- | --- |
| Search result | query, company/supplier type, name, address, country code, total shipments, latest shipment date, profile URL |
| Profile | entity type, name, address, latest shipment date, total sea shipments, canonical URL |
| Relationship | target importer/supplier, related party, country, shipment count, HS codes, displayed product description |
| Shipment | date, bill of lading, bill type, supplier/customer, country, weight, quantity, unit, containers, product description, trade lane, displayed freight estimate |
| HS-code summary | HS code, canonical HS page, displayed title |

Fields can be absent when ImportYeti does not display them for a particular row. The dataset schema keeps optional fields nullable.

### Getting started

1. Open the Actor input page.
2. Enter one or more free-text queries, profile URLs, or HS codes.
3. Choose whether search should return all profiles, only companies, or only suppliers.
4. Set `maxSearchResults`, `maxProfiles`, and `maxItems`.
5. Keep the default US residential proxy unless you have tested another suitable route.
6. Click **Start**.
7. Open the default dataset and export JSON, CSV, Excel, XML, or another supported format.

For a low-cost first test, search one importer with `maxProfiles` set to `0` and `maxItems` set to `10`.

### Input parameters

#### `queries`

Free-text ImportYeti searches.

Examples:

```json
["wal mart", "hdmi cable"]
```

The source can interpret a term as a company, supplier, brand, or product phrase. Search results report the source's own entity type.

#### `entityType`

Search-result filter:

- `all`
- `company`
- `supplier`

This filter applies to free-text search results. It does not change the type of an explicit profile URL.

#### `startUrls`

Public ImportYeti URLs under one of these route families:

```text
https://www.importyeti.com/company/wal-mart
https://www.importyeti.com/supplier/apm-terminals-india
https://www.importyeti.com/hs-codes/8471-automatic-data-processing-machines-and
```

Other hosts and unrelated ImportYeti route types are rejected.

#### `hsCodes`

Bare two-, four-, or six-digit codes:

```json
["84", "8471", "847130"]
```

ImportYeti resolves a bare code to its canonical public HS-code page when one exists.

#### `maxSearchResults`

Maximum matching profiles saved for each free-text query. Allowed range: 1–100.

#### `maxProfiles`

Maximum search results opened for deeper profile extraction. Allowed range: 0–10.

Use `0` when you only need discovery records. Opening profiles adds relationships and shipments but also adds browser work.

#### `maxItems`

Maximum total records across every input and record type. Allowed range: 1–500.

#### `includeRelationships`

When enabled, saves the displayed top supplier/customer relationship rows from profile and applicable HS-code pages.

#### `includeShipments`

When enabled, saves displayed recent bill-of-lading rows.

#### `proxyConfiguration`

The recommended default uses Apify US residential proxies. ImportYeti currently challenges ordinary datacenter and unmodified browser traffic.

Changing this setting can cause Cloudflare verification failures. The Actor does not silently fall back to an unmeasured proxy mode.

### Input examples

#### Search a US importer

```json
{
  "queries": ["wal mart"],
  "entityType": "company",
  "maxSearchResults": 10,
  "maxProfiles": 0,
  "maxItems": 10,
  "includeRelationships": false,
  "includeShipments": false
}
```

#### Extract a known importer profile

```json
{
  "queries": [],
  "startUrls": [
    { "url": "https://www.importyeti.com/company/wal-mart" }
  ],
  "maxItems": 15,
  "includeRelationships": true,
  "includeShipments": true
}
```

#### Research machinery shipments by HS code

```json
{
  "queries": [],
  "hsCodes": ["84"],
  "maxItems": 12,
  "includeRelationships": true,
  "includeShipments": true
}
```

### Output example

A real search-result shape from the current implementation:

```json
{
  "recordType": "search_result",
  "query": "wal mart",
  "targetType": "search",
  "targetName": "wal mart",
  "entityType": "company",
  "entityName": "Wal Mart",
  "entityUrl": "https://www.importyeti.com/company/wal-mart",
  "address": "Bentonville, Ar 72716, Us",
  "countryCode": "US",
  "latestShipmentDate": "19/08/2026",
  "totalShipments": 691169,
  "sourceUrl": "https://www.importyeti.com/company/wal-mart",
  "scrapedAt": "2026-08-26T21:44:52.048Z"
}
```

A shipment row adds fields such as `billOfLading`, `shipmentDate`, `weightKg`, `quantity`, `quantityUnit`, `containersCount`, `productDescription`, and `tradeLane`.

### How records link together

Profile, relationship, and shipment rows share:

- `targetType`
- `targetName`
- `targetUrl`
- `sourceUrl`

Relationship and shipment rows identify the related party with:

- `entityType`
- `entityName`
- `entityUrl`
- `country`

Use `recordType` to split a single dataset into logical tables while retaining these join keys.

### How much does it cost to scrape ImportYeti records?

This Actor uses pay-per-event pricing:

- one `start` event per run;
- one `item` event for each normalized dataset record saved.

Search results, profiles, relationships, shipment rows, and HS-code summaries use the same item event. There is no separate hidden charge for opening a profile.

The one-time start price is **$0.005**. At the BRONZE tier, each saved item costs **$0.002916**. The six item tiers decrease from FREE to DIAMOND; check the live pricing panel for the tier that applies to your Apify plan.

BRONZE examples:

| Saved records | Calculation | Actor price |
| ---: | --- | ---: |
| 10 | $0.005 + 10 × $0.002916 | **$0.03416** |
| 15 | $0.005 + 15 × $0.002916 | **$0.04874** |
| 50 | $0.005 + 50 × $0.002916 | **$0.15080** |

Residential proxy and browser compute are included in the Actor's operation; they are not additional Actor events.

### Scheduling sourcing and trade monitoring

Use Apify Schedules for recurring snapshots:

1. Save a task with canonical profile URLs.
2. Set a weekly or monthly schedule.
3. Export each run to a durable table.
4. Compare `latestShipmentDate`, `totalShipments`, relationship parties, HS codes, and recent BOL numbers.
5. Alert downstream systems only after your own change-detection rules confirm a meaningful change.

The Actor exports current displayed records. It does not itself maintain historical state or send alerts.

### Spreadsheet and warehouse workflows

#### Google Sheets

Send the dataset through an Apify integration. Filter `recordType=relationship` for supplier research or `recordType=shipment` for cargo analysis.

#### BigQuery, Snowflake, or PostgreSQL

Load the mixed dataset into a staging table, then create views by `recordType`. Use `targetUrl`, `entityUrl`, and `billOfLading` as practical deduplication inputs.

#### CRM enrichment

Start from approved importer profile URLs, save supplier relationship rows, and route shortlisted organizations into your qualification process.

Do not treat shipment activity alone as a verified sales contact or business relationship beyond what the public record displays.

### API usage with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/importyeti-us-import-records').call({
  queries: ['wal mart'],
  entityType: 'company',
  maxSearchResults: 10,
  maxProfiles: 0,
  maxItems: 10
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/importyeti-us-import-records').call(run_input={
    'queries': ['wal mart'],
    'entityType': 'company',
    'maxSearchResults': 10,
    'maxProfiles': 0,
    'maxItems': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST \
  'https://api.apify.com/v2/acts/automation-lab~importyeti-us-import-records/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"queries":["wal mart"],"entityType":"company","maxSearchResults":10,"maxProfiles":0,"maxItems":10}'
```

Retrieve the run's default dataset after completion through the run response or Apify Console.

### Use ImportYeti Scraper with Apify MCP

Add the Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/importyeti-us-import-records"
```

Claude Desktop, Cursor, and VS Code can use this MCP JSON configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=automation-lab/importyeti-us-import-records"
    }
  }
}
```

Example prompts:

- “Search ImportYeti for this importer and return the matching US company profiles.”
- “Extract the top suppliers and recent shipments for this public ImportYeti company URL.”
- “Research recent machinery import shipments under HS code 84.”

### Reliability and retry behavior

The Actor:

- creates one sticky proxy session;
- reuses browser cookies across targets;
- retries a failed navigation at most three times;
- rejects Cloudflare challenge pages as errors;
- skips a failed explicit target while continuing other targets;
- fails the run if no useful record is produced;
- stops saving after `maxItems`.

A successful run with zero expected data is not silently reported as valid output.

### Limitations

- ImportYeti can change its browser verification, page markup, displayed fields, and result limits.
- Search reflects the source's own matching logic and public index.
- Product phrases can match business names as well as cargo/product context.
- Only public company, supplier, and HS-code pages are supported as explicit URLs.
- The Actor does not access logged-in, premium, or private ImportYeti data.
- Recent shipment tables are bounded by what the public page displays.
- Some fields are redacted or absent in the underlying public record.
- Dates retain the format displayed by ImportYeti.
- Residential proxy availability and geography affect reliability.

### Troubleshooting

#### The run says no records were produced

Check for spelling errors, try a broader query, or paste a canonical company/supplier URL. For HS codes, try the two-, four-, or six-digit code without punctuation.

#### Cloudflare verification did not clear

Keep the default US residential proxy configuration. Avoid substituting datacenter proxies. Retry later if the source is experiencing a verification change.

#### I only need profile discovery

Set `maxProfiles` to `0` and disable relationships and shipments. This avoids detail-page navigation.

#### I need more shipment rows

Increase `maxItems`, but remember that public source tables remain bounded. The Actor does not claim access to premium history.

#### A field is null

The field was not displayed for that particular public record. Inspect `sourceUrl` to confirm the current source page.

### Responsible use and legality

ImportYeti presents trade information derived from public shipment records. Data availability does not remove your legal and contractual responsibilities.

Use this Actor only for lawful purposes. Follow applicable privacy, trade, sanctions, employment, anti-discrimination, and database-use rules. Respect the source's terms and avoid excessive request volume.

Do not use the output for harassment, unlawful profiling, or unsupported allegations. Verify high-impact decisions against authoritative sources.

### FAQ

#### Does the Actor require an ImportYeti login?

No. It extracts public pages and public search results without requesting user credentials.

#### Can it search suppliers?

Yes. Use a free-text query with `entityType` set to `supplier`, or provide a canonical supplier URL.

#### Can it search by product?

Yes. Free-text queries support product wording through ImportYeti's public search. The source determines which company and supplier profiles match.

#### Can it extract HS-code shipments?

Yes. Provide a two-, four-, or six-digit code in `hsCodes`, or a canonical HS-code URL.

#### Can it monitor changes?

Schedule repeated runs and compare datasets downstream. The Actor itself does not retain history or send alerts.

#### Why does it use a browser?

Current public ImportYeti pages apply Cloudflare verification. Direct HTTP, datacenter proxy, residential HTTP, and unmodified browser probes were challenged; a stable residential browser session was the proven autonomous route.

#### Are search and detail rows charged differently?

No. Each saved normalized row uses the same `item` event.

### Related Automation Lab tools

This Actor is intentionally standalone for ImportYeti sourcing and trade intelligence. Browse [Automation Lab's Apify Store profile](https://apify.com/automation-lab) for company-directory, website-enrichment, and data-processing Actors that can complement an exported importer or supplier list.

### Support

When reporting a reproducible problem, include:

- the Actor run ID;
- a sanitized input;
- the affected public ImportYeti URL or query;
- the expected record type;
- whether the default proxy configuration was used.

Do not include private downstream data or credentials.

# Actor input Schema

## `queries` (type: `array`):

Free-text searches such as a US importer, foreign supplier, product keyword, or brand name.

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

Return all matching business profiles, only US importing companies, or only foreign suppliers.

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

Canonical public ImportYeti profile or HS-code pages to extract in depth.

## `hsCodes` (type: `array`):

Two-, four-, or six-digit HS codes, for example 84, 8471, or 847130.

## `maxSearchResults` (type: `integer`):

Maximum matching company or supplier profiles saved for each free-text query.

## `maxProfiles` (type: `integer`):

Number of matching profiles to open for relationships and recent shipments. Set to 0 for search results only.

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

Stop after saving this many records across searches, profiles, relationships, and shipments.

## `includeRelationships` (type: `boolean`):

Save the displayed top suppliers for companies or top customers for suppliers and HS codes.

## `includeShipments` (type: `boolean`):

Save displayed recent bill-of-lading rows from profile and HS-code pages.

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

ImportYeti requires a stable US residential browser session. The default is recommended.

## Actor input object example

```json
{
  "queries": [
    "wal mart"
  ],
  "entityType": "all",
  "startUrls": [],
  "hsCodes": [],
  "maxSearchResults": 10,
  "maxProfiles": 1,
  "maxItems": 20,
  "includeRelationships": true,
  "includeShipments": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

All normalized records saved by this run.

# 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 = {
    "queries": [
        "wal mart"
    ],
    "maxSearchResults": 10,
    "maxProfiles": 1,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/importyeti-us-import-records").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 = {
    "queries": ["wal mart"],
    "maxSearchResults": 10,
    "maxProfiles": 1,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/importyeti-us-import-records").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 '{
  "queries": [
    "wal mart"
  ],
  "maxSearchResults": 10,
  "maxProfiles": 1,
  "maxItems": 20
}' |
apify call automation-lab/importyeti-us-import-records --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/importyeti-us-import-records"
        }
    }
}

```

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/YSJSEtSwoEQTAwlmQ/builds/Yd0Cm5QE3pWUayHOc/openapi.json
