ImportYeti API

Find out who manufactures for any US brand

The ImportYeti API turns US customs bill-of-lading records into clean JSON in seven actions, and the question it exists to answer is who actually manufactures for a given brand.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a ImportYeti endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
I
/importyeti/v1

7 active endpoints, on 1 and 3 credit tiers.

  • POST/importyeti/v1/search
  • POST/importyeti/v1/company
  • POST/importyeti/v1/supplier
  • POST/importyeti/v1/suppliers
  • POST/importyeti/v1/customers
  • POST/importyeti/v1/shipments
  • POST/importyeti/v1/hs_code

What ImportYeti endpoints does ReefAPI ship?

7 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

7 endpoints

search

1 cr

Search US importers and overseas suppliers by name.

required
query
optional
page, type

company

3 cr

Full report for a US importer.

required
company
optional

supplier

3 cr

Full report for an overseas supplier.

required
supplier
optional

suppliers

3 cr

Who manufactures for this US brand.

required
company
optional
limit, country_code

customers

3 cr

Who this factory ships to.

required
supplier
optional
limit, country_code

shipments

3 cr

The bills of lading behind a company or a supplier.

required
optional
company, supplier, limit

hs_code

3 cr

Trade in one HS code.

required
hs_code
optional
limit

Every parameter, every allowed value →

ImportYeti API

6 of 7 endpoints, ready to run

View docs ↗

A US importer's overseas suppliers, ranked by the number of shipments between the two: name, slug, country, the shipments behind the relationship, the last twelve months, weight in kilograms, TEU, the HS chapters they ship under and the product text off those manifests.

3 credits1 required · 2 optional
POST/importyeti/v1/suppliers
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the ImportYeti API works

ImportYeti is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 280 engines.

02
Call
POST /importyeti/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Map a competitor's supply chain, then find who else its factories serve

Three calls take you from a brand name to a named factory, and the fourth turns that factory around to show the rest of its customer list.

01search
POST/importyeti/v1/search
{"query": "nike", "type": "company"}

Pick the right corporate entity before anything else: a brand usually has several, and they are not interchangeable. Each hit carries its slug, its lifetime shipment count and the date of its last shipment, so the dormant shells are obvious next to the one that is actually importing.

02suppliers
POST/importyeti/v1/suppliers
{"company": "nike-usa"}

The overseas factories, ranked by shipments between the two, each with country, the HS chapters it ships under, weight, TEU and the product text off those manifests. Store the slug on each one; it is what the reverse lookup takes.

03shipments
POST/importyeti/v1/shipments
{"company": "nike-usa", "limit": 10}

The manifests behind the ranking, so a relationship can be dated rather than assumed: counterparty, product description, weight, containers, packages and trade lane, newest first. date_range shows how much history sits behind the 50-row window.

04customers
POST/importyeti/v1/customers
{"supplier": "apl-logistics-vietnam"}

Turn any supplier around and read the US companies it also ships to, ranked the same way. This is the step that turns a supplier map into a prospect list, or into a concentration risk you can put a number on.

A named, ranked supply chain for a brand, dated against real shipments, plus the rest of the customer list for every factory in it.

request
curl -X POST https://api.reefapi.com/importyeti/v1/suppliers \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"company":"nike-usa"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "importyeti",
    "endpoint": "suppliers",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

How deep the public record goes, and where it stops

Every limit below was measured on 2026-09-23 across ten subjects, including one with 251,449 lifetime shipments. They are properties of the public record, not of this API, and every response states them in its own fields so a truncated list can never look complete.

What you ask forWhat comes backThe limit, stated
Suppliers of a company / customers of a supplierUp to 50 counterparties, ranked by the shipments between the two parties50 is the ceiling on every subject, however large. truncated and source_cap say so on every response.
Shipments for a company or supplierUp to 50 bills of lading, most recent firstSame 50-row ceiling. date_range returns the subject's true first and last shipment date, so you can see how much history sits behind the window.
Search10 results per page, up to 14 pages140 results is the hard ceiling. The record's own hit count runs far higher and saturates at 10,000; both the claimed figure and the reachable one come back, as total_hits and results_cap.
HistoryRecords from 2015 to roughly a week before todayMeasured: all eight company subjects began in January or February 2015 and ended within eight days of the run. database_updated carries the source's own cut-off date.
Declared shipment valuecif_value_usd on the manifests that carry oneA subset, returned as its own list rather than merged into the main one. The separate estimated_shipping_cost_usd is a freight model, present on about two thirds of shipments, and is named an estimate everywhere it appears.
HS codes2-digit chapters and 6-digit subheadings resolve from the code alone4-digit headings are not in the public HS index, so they take the slug instead — every company and supplier response hands you that slug in hs_codes[].url.

About one counterparty row in ten has no name: US customs lets a shipper request confidentiality, and those manifests are aggregated under a placeholder. Those rows are returned rather than dropped, because deleting them would silently under-count the company, and each is flagged with name_withheld so you never rank a placeholder as if it were a factory.

What the customs record publishes, what it does not, and what each number means

Measured on 2026-09-23 across ten subjects in eight industries, from a 13,335-shipment toy company to a supplier with 251,449. Four of the lines below go against us; they are the ones to read first, because they decide whether this fits your problem at all.

Against us: US imports only

Goods arriving in the United States, overwhelmingly by sea. It answers which overseas factory ships to a US buyer and which US buyers a factory serves. It does not cover US exports, and it does not cover trade between two other countries. If you need EU or Asian import flows, this is the wrong source and no parameter here will change that.

Against us: 50 counterparties, 50 shipments

The public record publishes a top 50 by shipment count and the 50 most recent bills of lading per company or supplier, and there is no deeper page behind them. This held on every subject measured, including one with a quarter of a million lifetime shipments. Every response says so with truncated and source_cap, and returns the subject's true first and last shipment date so you can see the history the window is sitting on.

Against us: search stops at 140 results

Ten results per page and fourteen pages, whatever the reported hit count says — and that count runs into the thousands and saturates at exactly 10,000 on broad terms. Both figures come back, as total_hits with total_hits_is_floor, and results_cap. Asking for page 15 is refused rather than answered with an empty page that looks like the end of the list.

Against us: about one row in ten has no name

US exporters can ask customs to keep their identity confidential, and those manifests are pooled into a single unnamed row. Across eight company reports that row accounted for between 0 and 11 of the 50 counterparties, and on aggregate HS-code tables it is often the largest single row. It is returned rather than dropped, flagged with name_withheld and carrying no slug.

The ranking is the product, and it was checked against the source

Counterparties are ranked by the shipments between the two parties, not by the partner's own size, so a large freight forwarder does not outrank the factory that actually makes the goods. On ten subjects the top-ranked counterparty matched the source's own published statement of the top supplier on 8 of 8 where the source states one, and every lifetime shipment total matched on 10 of 10.

Two different 'top country' answers, both returned

top_partner_country is the country of the number-one counterparty; top_country_by_shipments is the country the subject moves the most shipments through. They are frequently different — for one large retailer the first was Vietnam and the second China — so both ship under names that say which is which, with the full ranked partner_countries breakdown behind them.

Values: one is declared, one is modelled

cif_value_usd is a declared customs value and appears only on the manifests that carry one, in their own list. estimated_shipping_cost_usd is a freight estimate, was present on about two thirds of the shipments measured, and each subject reports shipping_cost_coverage_pct for how much of its traffic could be priced at all. Neither is what the buyer paid for the goods.

What is on every row

Across 400 counterparty rows and 400 bills of lading: name, country and country code, shipment counts both lifetime and twelve-month, weight in kilograms, TEU, HS codes and product text were present on every counterparty row; date, bill of lading number, master and house numbers, product description, weight, containers, quantity, unit and trade lane were present on every shipment. The gaps are the honest ones, and they are the unnamed rows and the freight estimate.

What people build with ImportYeti

The jobs this data is most often used for.

7

endpoints

1/3

credits per call

01

Sourcing teams take a competitor's brand name and read suppliers to get its overseas factories ranked by shipment count, with the HS chapters and product text that say which factory makes which part of the range.

02

Sales teams working a factory account call customers on that supplier to see which US companies already buy from it, ranked by volume, and size the account before the first call.

03

Procurement shortlists start from hs_code: classify the product once, then read the top overseas suppliers already shipping that code into the US, with the shipment counts behind each one.

04

Supply-chain risk and diligence tools track a supplier's concentration over time by reading a company's partner_countries breakdown and the twelve-month shipment counts next to each lifetime total.

What ImportYeti data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 280 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/importyeti/v1/suppliers \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"company":"nike-usa"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/importyeti/v1/suppliers",
    headers={"x-api-key": REEF_KEY},
    json={
  "company": "nike-usa"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up ImportYeti.

Get a free key →
What question does this actually answer that a company database does not?

Who ships to whom. A company database tells you a brand exists and roughly how big it is; this tells you that a named factory in Vietnam put 189 shipments on the water for that brand, under which HS codes, through which ports, and when the last one landed. It is the relationship between two businesses, read off the customs manifests that recorded it, and it runs in both directions — a brand's suppliers, and a factory's customers.

Where does the data come from, and is it legal to use?

US customs bill-of-lading manifests, which are public records, surfaced through ImportYeti. The parties in them are businesses — importers, exporters, freight forwarders and carriers — and the fields are the commercial terms of a shipment: names, addresses, dates, HS codes, weights, container counts and ports. It is business data about business activity, not personal data, which is why the companies are named.

How far back does it go, and how current is it?

Back to 2015 on every subject measured, and forward to within about a week of the present: on 2026-09-23 the most recent shipments across the sample were dated 15 and 16 September. Rather than asking you to trust that, every response returns database_updated with the source's own cut-off date, and each subject returns its true first_shipment_date and last_shipment_date.

Can I get more than 50 suppliers or more than 50 shipments?

Not on this API, and it will not pretend otherwise. The public record publishes a top 50 by shipment count and the 50 most recent bills of lading, and there is no deeper page behind them. Every response carries truncated and source_cap: 50, so a partial list is always labelled as one. What you can do is widen sideways — the 50 counterparties are the 50 that matter by volume, and each carries its own slug, so you can walk into any of them for its own full report.

Why do some rows have no company name?

Because the shipper asked US customs to keep it confidential, which is a right exporters can exercise. Those manifests are aggregated into a single placeholder row, and on large importers that row is sometimes the biggest one on the page. It is returned, not deleted — removing it would make the company's totals look smaller than they are — and it carries name_withheld: true plus no slug, so it can never be mistaken for a factory you could go and look up.

Is the shipping cost a real declared value?

Two different numbers, and the naming keeps them apart. cif_value_usd is a declared value and appears only on the manifests that actually carry one, in their own list. estimated_shipping_cost_usd is a freight model, not a customs figure; it was present on about two thirds of the shipments measured, and each subject also returns shipping_cost_coverage_pct saying what share of its shipments the model could price at all. Neither is a purchase price.

Does it cover exports, or trade between other countries?

No. This is US import records — goods arriving in the United States, mostly by sea. It will tell you which overseas factory ships to a US buyer and which US buyers a factory serves, but it does not cover US exports or trade that never touches a US port. That is a real boundary, and worth knowing before you plan around it.

I only have a company name, not an id. Does that work?

Yes. Pass the name and it is resolved for you, and the response reports which record it picked in resolved_from so you can pin the slug for later. The resolution is deliberately strict: the source's own search is fuzzy enough to return loosely related names for anything at all, so a name whose words the matched record does not carry comes back as NOT_FOUND rather than as a confident wrong company. Use search first when you want to choose between candidates yourself.

What is the ImportYeti API?

ImportYeti API is a ReefAPI endpoint group for us customs shipment records: which overseas factory ships to which us company, how often, and what it sends. It returns live JSON through POST requests under /importyeti/v1.

Is the ImportYeti API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. ImportYeti calls use the same shared credit balance as every other ReefAPI engine.

Do I need an ImportYeti login or account?

No login to ImportYeti is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the ImportYeti data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the ImportYeti API use?

ImportYeti actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call ImportYeti from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call importyeti actions with the same key, credit pool and JSON envelope used by normal REST requests.

116 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling ImportYeti, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.