ImportYeti Bill of Lading Scraper — No Login, $1.4/1k avatar

ImportYeti Bill of Lading Scraper — No Login, $1.4/1k

Pricing

from $1.40 / 1,000 results

Go to Apify Store
ImportYeti Bill of Lading Scraper — No Login, $1.4/1k

ImportYeti Bill of Lading Scraper — No Login, $1.4/1k

ImportYeti scraper: US customs bills of lading for bulk lists of importers, suppliers, HS codes or addresses. Shipper, consignee, cargo, weight, containers, arrival date. Also company/supplier lead lists with shipment counts. No login or cookies. MCP-ready for AI agents. $1.4 per 1,000 records.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Fortuitous Pirate

Fortuitous Pirate

Maintained by Community

Actor stats

1

Bookmarked

67

Total users

10

Monthly active users

12 hours ago

Last modified

Share

ImportYeti Bill of Lading Scraper

Get current US customs import records (ocean bills of lading) from ImportYeti without a login: who imports what, from which overseas supplier, how much and when. Paste a list of importers, suppliers, HS codes or addresses and get one clean row per shipment, or pull a lead list of companies and suppliers with their shipment counts.

  • Current data: US CBP manifests republished by ImportYeti, updated daily; shipments usually appear 5 to 10 days after arrival.
  • Bulk input: lists of importers, suppliers, HS codes / product keywords, ImportYeti URLs, or a CSV / Google Sheet link.
  • Filters buyers ask for: minimum total shipments, active within N months, shipments from the last N days, arrival date window, per-company cap.
  • Two outputs: shipment rows (bills of lading) or company/supplier rows (lead lists).
  • No ImportYeti account, no cookies. Runs on Apify residential proxy so ImportYeti's 25-pageviews-per-IP limit never stops you.
  • Partial results are kept: one bad name never fails the run; the OUTPUT record lists what matched and what did not.

What buyers use it for

GoalInputYou get
Find a competitor's factoriescompanies: ["Anker International", "Keurig Green Mountain"]Their latest shipments with the overseas shipper, cargo, weight, containers
Find a factory's US customerssuppliers: ["Anker Innovations"]The US consignees it ships to
Find suppliers of a producthsCodes: ["lithium batteries", "9403"]Recent shipments of that product with the overseas shipper
Build an importer lead listmode: "entities", queries: ["coffee"], entityType: "company", minShipments: 100, lastShipmentWithinMonths: 6Active US importers with total shipments and last shipment date
Find every importer at a locationmode: "entities", searchBy: "address", queries: ["Stone Mountain, GA"]Companies whose address matches
Watch new arrivalsAny list + shipmentsWithinDays: 7, scheduled weeklyOnly shipments that arrived in the last 7 days

Input

FieldExampleNotes
companies["Walmart", "anker-international", "https://www.importyeti.com/company/wal-mart"]US importers (consignees): names, ImportYeti slugs or URLs
suppliers["Anker Innovations"]Overseas suppliers (shippers): names, slugs or URLs
hsCodes["8507", "850760", "solar panels"]HS codes, or product keywords mapped to 6-digit HS codes; only shipments whose cargo description contains the keyword are kept
queries["Home Depot", "Target"]Interpreted by searchType (and searchBy)
listUrlhttps://docs.google.com/spreadsheets/d/.../editCSV/TXT file or Google Sheet shared as "anyone with the link"; first column is read, ImportYeti URLs auto-detected
startUrls[{"url": "https://www.importyeti.com/hs-codes/8507"}]ImportYeti company, supplier or HS-code pages

Each name is matched to the best ImportYeti entity (exact or close name, recently active first, then most shipments). maxMatchesPerQuery reads more than one match per name (default 1 for lists).

Mode and filters

FieldDefaultNotes
modeshipmentsshipments = bill of lading rows; entities = company/supplier rows from ImportYeti search (no page views, fast)
searchBynameaddress matches companies by address text instead of name
entityTypeanycompany (US importers) or supplier (overseas) in entities mode; the companies/suppliers lists set it automatically
minShipments0Skip companies/suppliers with fewer total shipments
lastShipmentWithinMonths0Skip companies/suppliers with no shipment in the last N months
shipmentsWithinDays0Keep only shipments that arrived in the last N days
dateFrom / dateToArrival date window, YYYY-MM-DD
maxShipmentsPerTarget0 (no cap)Shipments per matched company / supplier / HS code, so maxItems spreads across a long list
maxItems10Total records for the run
proxyConfigurationApify residentialKeep it on; ImportYeti hides data after 25 pageviews per IP and blocks datacenter IPs

minShipments and lastShipmentWithinMonths apply to names and addresses (pasted URLs are read as given).

Single search (original inputs, still supported)

searchType (consignee, shipper, cargo, marks) + searchQuery + maxPages work exactly as before. searchQuery is used when no list or URL is given; an empty input returns a Walmart sample.

Output

Shipment row (mode: "shipments")

{
"recordType": "shipment",
"url": "https://www.importyeti.com/us-bill-of-ladings/NPSCSELNGB269089",
"billOfLadingNumber": "NPSCSELNGB269089",
"masterBillOfLadingNumber": "...",
"billType": "house",
"shipperName": "Ningbo Singfun Electric Appliance C",
"shipperAddress": "...",
"shipperCountry": "China",
"shipperUrl": "https://www.importyeti.com/supplier/...",
"consigneeName": "Wal Mart",
"consigneeAddress": "Bentonville, Ar 72716, Us",
"consigneeCountry": "United States",
"consigneeUrl": "https://www.importyeti.com/company/wal-mart",
"arrivalDate": "2026-10-15",
"shippingRoute": "Asia,Pacific",
"cargoDescription": "...",
"hsCode": null,
"hsCodeDescription": null,
"quantity": 36,
"quantityUnit": "CTN",
"numberOfPieces": "36 CTN",
"grossWeightKg": 336,
"grossWeight": "336 KG",
"estimatedFreightUsd": 8192.04,
"containerCount": 1,
"searchType": "consignee",
"searchQuery": "Walmart",
"sourcePage": "https://www.importyeti.com/company/wal-mart",
"scrapedAt": "2026-10-21T00:00:00.000Z"
}

hsCode / hsCodeDescription are filled for HS code and product searches. ImportYeti guards HS-code pages more strictly than company pages, so some codes are refused even through residential proxy after several retries; those are listed in OUTPUT with the error and the rest of the run continues. ImportYeti does not show the importer on product pages, so consignee* is null for those rows. Fields ImportYeti keeps behind its paid login are present for compatibility and always null: phones, notify party, vessel, voyage, ports, volume, net weight, declared value, container numbers.

Company / supplier row (mode: "entities")

{
"recordType": "entity",
"url": "https://www.importyeti.com/company/anker-international",
"entityName": "Anker International",
"entityType": "company",
"entityCountryCode": "US",
"entityAddress": "1640 Stone Ridge Dr 678-735, Stone Mountain, Ga 30083, Us",
"totalShipments": 8170,
"mostRecentShipmentDate": "2026-10-19",
"otherNamesCount": 36,
"otherAddressesCount": 108,
"searchType": "consignee",
"searchBy": "name",
"searchQuery": "Anker"
}

Run summary

The OUTPUT record in the run's key-value store lists every input entry with the ImportYeti pages it matched, how many records it produced and any error (no match, page not found), so you can fix a list without rerunning everything.

How many records can I get?

Each ImportYeti company, supplier or HS-code page shows its 50 most recent shipments, so one matched entity gives up to 50 shipment rows. For more coverage add more entities (lists, maxMatchesPerQuery) rather than expecting deep history for one company.

Pricing

Pay per result; see the Pricing tab for the current price per 1,000 records. Company/supplier rows and shipment rows cost the same. You only pay for rows you receive.

Run it from code

curl -X POST "https://api.apify.com/v2/acts/fortuitous_pirate~bill-of-lading-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["Keurig Green Mountain", "Anker International"], "shipmentsWithinDays": 30, "maxShipmentsPerTarget": 20, "maxItems": 40}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("fortuitous_pirate/bill-of-lading-scraper").call(run_input={
"mode": "entities",
"queries": ["coffee"],
"entityType": "company",
"minShipments": 100,
"lastShipmentWithinMonths": 6,
"maxItems": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["entityName"], item["totalShipments"], item["mostRecentShipmentDate"])
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('fortuitous_pirate/bill-of-lading-scraper').call({
hsCodes: ['lithium batteries'],
shipmentsWithinDays: 14,
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((i) => `${i.arrivalDate} ${i.shipperName}: ${i.cargoDescription}`));

For AI agents

The actor works through the Apify MCP server. Give it a list of company names or HS codes and read recordType to tell shipment rows from company rows. Start with mode: "entities" to find the right ImportYeti entities cheaply, then pass their url values back as companies or suppliers for shipment detail.

Data source and history

Records come from US Customs and Border Protection import manifests as published by ImportYeti. Until 2026-09-28 this actor read Port Examiner, which stopped updating in July 2016; Port Examiner search URLs in startUrls are still converted to the equivalent search. Input and output field names from earlier versions are unchanged, so existing tasks and integrations keep working.