← Health board

ImportYeti US Customs Records & Supplier Scraper

Who a US company imports from: one flat row per bill of lading, with supplier, country, weight, container count, HS codes and the ocean carrier.

insufficient data

Verification

Not yet in the weekly verification report.

Output fields

Authoritative field set from the dataset schema.

FieldType
shipment_datestring|null
company_namestring|null
supplier_namestring|null
supplier_countrystring|null
supplier_citystring|null
bill_of_ladingstring|null
master_bill_of_ladingstring|null
carrierstring|null
weightnumber|null
weight_unitstring|null
quantitynumber|null
quantity_unitstring|null
container_countnumber|null
freight_routestring|null
estimated_freight_cost_usdnumber|null
company_hs_codesarray|null
supplier_urlstring|null
company_addressstring|null
requested_companystring|null
source_urlstring|null
noticestring|null

Sample row

{
  "source_url": "https://www.importyeti.com/company/nike",
  "shipment_date": "04/27/2023",
  "bill_of_lading": "HLCUSGN230386021",
  "master_bill_of_lading": null,
  "bill_type": "R",
  "carrier": "Hapag-Lloyd",
  "carrier_tracking_url": null,
  "supplier_name": "Apl Logistics Vietnam Company Ltd",
  "supplier_country": "Vietnam",
  "supplier_city": "Xa Long An",
  "supplier_url": "https://www.importyeti.com/supplier/apl-logistics-vietnam",
  "weight": 27062,
  "weight_unit": "kg",
  "quantity": 3699,
  "quantity_unit": "pcs",
  "container_count": 4,
  "freight_route": "Asia US Pacific",
  "estimated_freight_cost_usd": 5058.32,
  "company_name": "Nike",
  "company_address": "1 Bowerman Dr, Beaverton, Or 97005, Us",
  "company_hs_codes": [
    "6110.20.2069",
    "6110.30.3053",
    "8479.89.97"
  ],
  "requested_company": "nike"
}

Inputs

FieldTypeReqDefaultDescription
company string no "nike" The US company whose imports you want, e.g. 'nike', 'home depot', 'lululemon usa inc'. A bare ImportYeti slug ('wal-mart') or a full ImportYeti company URL both work. Kept forever alongside 'Importers' because saved tasks and API callers send it.
companies array no [] Look up several importers in ONE run instead of a run each. Combined with 'US importer' if you fill both, and duplicates are removed. 'Maximum results' applies PER importer, so adding one can never truncate the others. Runs are paced ~3s apart because ImportYeti rate-limits rapid requests.
supplierCountry string no Keep only shipments from suppliers in this country, e.g. 'Vietnam', 'China', 'Netherlands'. Matched against the country ImportYeti names on each shipment. Leave empty for every country.
maxResults integer no 50 Cap on shipments returned PER importer. ImportYeti's public company page serves at most 50 recent shipments per company and has no page 2 — deeper history is behind its paid API — so any value above 50 returns those 50 and the run says so on a free row.
proxyConfiguration object no {"useApifyProxy":false} Leave OFF. Measured 2026-09-08 from inside an Apify run: ImportYeti answered 200 on the container's own IP, on Apify datacenter proxy and on residential alike, so a proxy only adds latency. Turn one on if your runs start hitting ImportYeti's per-IP rate limit.

Pricing

Pay per result (company-report) — no charge for empty runs.
Example: 1000 importer reports at $0.005/result ≈ $5.00.

FAQ

Why is this billed per importer instead of per row?

Because the alternative would have made it far more expensive than it looks. One page fetch answers one importer and returns up to 50 shipments, so an importer is what a run actually costs and what a buyer actually asks for. The category leader charges $0.00699 for one company record with its shipments nested inside it; billing our flat rows individually at a typical per-row rate would have made the identical question — one importer's 50 shipments — cost roughly fourteen times theirs for the same data. Measured 2026-09-08 before this Actor was published, which is why the pricing model is what it is.

Does it return the product description for each shipment?

No, and this is the clearest thing another tool in this category does that this one does not. ImportYeti's public company page renders the product description client-side: the server HTML contains a loading placeholder, not the text, so it cannot be read from the page this Actor parses. `zen-studio/importyeti-scraper` does return a product description on essentially every shipment (measured 1,095 of 1,097 on 2026-09-08) along with aggregate trade analytics such as top carriers and shipping lanes. If product-level detail or carrier-share analysis is what you need, that is the better tool. What you get here instead is flat per-shipment rows, the carrier and its tracking link, and a lower price per importer.

How far back does the shipment history go?

The public company page serves a window of recent shipments — 50 on every company measured — and it has no page two: ?page=2, ?offset=50 and ?shipment_page=2 all return the identical page, byte for byte. Deeper history sits behind ImportYeti's own paid API, which answers 401 without a subscription. When you ask for more than the page can give, the run returns everything available and adds one free row saying so. Filtering by supplier country, or looking up a supplier directly, surfaces different records.

What if the company name I have does not match?

ImportYeti keys company pages on the name as it appears on the customs manifest, which is often a legal entity ('Lululemon Usa Inc') rather than a brand. The Actor turns whatever you type into that URL form, so 'home depot', 'Home Depot' and 'home-depot' all resolve. When no page exists it returns a free 'no_results' row naming the exact slug it tried, so you can correct it — or paste the ImportYeti company URL directly, which always works.

Does it return the importer's email or phone number?

No. Those cells are behind ImportYeti's paywall and render as 'Unlock' or as masked digits like XXXXXXX453. Rather than ship a column of placeholder strings that look like data, the Actor drops them. If you need contact details for the companies you find here, pair this with a contact-details Actor against the company name and address.

Are these records legal to use, and do they contain personal data?

US customs manifest data is public trade information published about companies — importer, supplier, commodity codes, weights and container counts. This Actor returns exactly that. It collects no personal contact details and no individual's information; the paywalled contact fields on the source are deliberately not returned.

Why did my run come back with a 'blocked' row?

ImportYeti rate-limits per IP address, and it does it in the most confusing way available: it answers with HTTP 200 carrying a shell page — no error, no status code to check, nothing in the body saying refused. That shell parses to zero shipments, which on an import lookup would read as 'this company imports nothing'. This Actor detects it structurally, retries once from a fresh proxy address because a per-IP limit does not clear by waiting, and if it is still refused returns a free row saying so rather than a confident wrong answer.

Guides & use cases

Related actors