# Coffee Importer & Distributor Finder — Evidence (`dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based`) Actor

Find coffee importers, distributors and wholesalers across selected countries with official-site evidence. Worldwide mode searches up to 12 markets per batch; bulk, branded and OEM fit are assessed separately. Public business contacts where available. Coverage and buying intent are not guaranteed.

- **URL**: https://apify.com/dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based.md
- **Developed by:** [Đức Anh Nguyễn Phan](https://apify.com/dream_chaser_2.2mtwd) (community)
- **Stats:** 2 total users, 1 monthly users, 93.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 qualified partners

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Coffee Importer & Distributor Finder — Evidence

Find business partners you can assess from their own website — with evidence for the product, partner role, country and business model.

Choose **bulk ingredient**, **finished branded product**, or **OEM/private label**. Each company receives a qualification status, public business contacts where available, and source URLs explaining the result. Built for export research, supplier research and distributor prospecting.

### Search coffee across countries

Use `product: coffee` and `targetCountry: Worldwide` for a bounded multi-country search. The quick default example searches Australia and Singapore within a 210-second processing budget. Enter up to 12 country names in `targetCountries` to choose other markets. An explicitly empty list selects the 12 starter markets: United States, United Kingdom, Germany, United Arab Emirates, Vietnam, Brazil, India, Singapore, Australia, Canada, Japan and Thailand.

Worldwide mode performs two search queries per market in one metered child run, then checks the same product, role, business-model and location gates. Country is derived from company-site evidence; searching a market does not establish company location. Domains are deduplicated across markets. A time limit can leave candidates unprocessed. This is not an exhaustive global company directory, and non-English-only sites may be missed. Only the listed countries are searched.

Broad coffee includes roasted/green/instant coffee candidates; use precise product wording when the offer is specific. The historical Thailand instant-coffee benchmark does not certify other coffee types or countries. Global cost and precision require separate validation; more search pages can increase costs. The child search cap remains $0.50 and is separate from the parent run limit.

```json
{
  "product": "coffee",
  "targetCountry": "Worldwide",
  "targetCountries": ["Australia", "Singapore"],
  "offerType": "Finished branded product",
  "partnerTypes": ["Importer", "Distributor", "Wholesaler"],
  "maxResults": 10,
  "maxRunSeconds": 210,
  "searchProvider": "apify-google",
  "searchBudgetUsd": 0.5
}
```

### Run your first search

#### Ready-to-run coffee searches

- [Worldwide coffee importers and distributors](https://apify.com/dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based/examples/worldwide-coffee-importer-distributor-finder): start with four markets, then change the countries and offer type.
- [Thailand instant-coffee ingredient partners](https://apify.com/dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based/examples/importer-distributor-finder-evidence-based-task): the original small benchmark market.

#### Validate websites you already have

Enter company websites in **Optional candidate websites** (`seedUrls`). When this list is nonempty, the Actor validates only those websites, up to 60, and does not call paid search. This saves discovery fees, but startup and RECOMMENDED result fees still apply. Clear the list to discover new companies. Supplied websites must pass the same evidence gates; no recommendations are guaranteed.

For a focused branded coffee search, use `coffee` with `Finished branded product`. For a specific bulk offer, use `green coffee beans` or `instant coffee` with `Bulk ingredient`. For contract production, choose `OEM-private label`. A distributor selling an existing brand is a research candidate, not evidence that it will purchase or carry your brand.

1. Click **Try for free** to open the Actor in Apify Console.
2. Enter your product, target country, offer type, accepted partner roles and maximum results.
3. Review the pricing and set a run spending limit. The default memory is 512 MB.
4. Click **Start**. Open **Qualified partners**, filter to **RECOMMENDED**, and inspect the evidence before contacting a company.
5. Use **Export** to download CSV, XLSX or JSON.

Start with this tested use case:

```json
{
  "product": "instant coffee",
  "targetCountry": "Thailand",
  "offerType": "Bulk ingredient",
  "partnerTypes": ["Importer", "Distributor", "Wholesaler"],
  "maxResults": 10,
  "maxRunSeconds": 240,
  "searchProvider": "apify-google",
  "searchBudgetUsd": 0.5
}
```

For finished branded coffee change `offerType` to `Finished branded product`. OEM/private label is supported as an input, but has not been benchmark-validated. Other products and countries also require review.

### Why the offer type matters

Historical Thailand instant-coffee benchmarks produced different recommendations:

| Offer | Company | Evidence on the official website |
| --- | --- | --- |
| Bulk ingredient | KC Interfoods | [Industrial instant-coffee powder and bulk coffee](https://www.kcinterfoods.co.th/product-category/bulk-packaging/coffee-bulk/) |
| Bulk ingredient | Purandar | [Imported instant-coffee powder for production, with wholesale quantities](https://www.purandar.net/) |
| Finished branded product | SUM BY DEE / Dao Coffee Thailand | [Thai importer/distributor of the Dao brand](https://www.daocoffeethailand.com/about-us) and [packaged instant-coffee products](https://www.daocoffeethailand.com/) |

These are examples from past runs, not guaranteed future results. Historical listings do not prove current stock, purchasing intent or willingness to carry your brand.

### What you receive

Company name, country/city when established, official website, partner role, product match, offer-model fit, public business email/phone when extracted, relevant products, evidence excerpts and URLs, evidence grade, rank score and qualification notes.

- **RECOMMENDED:** all required qualification gates passed.
- **SECONDARY:** a potentially relevant company with incomplete commercial-fit evidence.
- **RESEARCH_NEEDED:** further verification is required.

The Actor ranks companies by status before score. A score is not a probability of purchase. `maxResults` limits all returned rows and does not guarantee that many recommendations. Empty contact fields mean no eligible contact was extracted.

### Pricing

**$0.05 per RECOMMENDED company**, plus the **Actor Start event at $0.02 per GB of memory, minimum one event**. At the default 512 MB, one startup event is charged. SECONDARY and RESEARCH_NEEDED rows have no result-event fee. Platform usage for this Actor is included in its event price.

The Actor also calls the separately metered official Google Search Results Scraper. Its fee and technical spending cap are separate from this Actor's event charge and parent spending limit. Review both runs; do not assume the parent limit covers the child search.

The default parent run limit is **$0.45**, with a separate **$0.50** child-search cap. At the current 512 MB event pricing, $0.45 allows at most eight RECOMMENDED result events after startup, subject to other billing constraints. A $0.15 parent limit allows only about two. The SDK stops delivery when the paid-result allowance is exhausted; `maxResults` does not override your spending limit. Raise the limit yourself only after reviewing the displayed prices. These are maximum spending limits, not expected fees or promised result counts.

For illustration, two recommendations at default memory produce **$0.12 in this Actor's event fees**. Single-country bulk and branded searches now use two focused queries. The observed search fee for two pages was **$0.0100** at the tested Free-tier rate; the older three-query bulk search cost $0.0145. Search rates depend on the account/tier and can change. A run with zero recommendations can still incur startup and search fees.

No enrichment, paid-ad extraction, paid proxy, LLM, external API key or browser rendering is enabled. Search requests use one page per query, with no automatic restarts. The child technical cap is $0.50; it is a cap, not the expected charge.

### Evidence and privacy

Discovery → domain deduplication → reachable company-site validation → targeted crawl → role, product, business-model, evidence and exclusion checks → company/domain deduplication → ranking.

A retailer buying from a distributor is not automatically a distributor. Keywords alone do not prove bulk-ingredient fit. Company identity and location are assessed from site evidence, not a government registry.

Only public generic business emails and labelled business phones are extracted. Personal/freemail contacts are excluded. No login-gated data, CAPTCHA bypass or paywall bypass. Robots restrictions, timeouts, large pages and JavaScript-only pages can prevent extraction.

### Validation and limits

**G1 measures quality:** manual precision at least 85%, source evidence and reachable own websites at least 95%, duplicates at most 3%. The latest audits manually accepted four finished-product companies across the USA/UK/UAE/Vietnam, two across Australia/Singapore, one Thai finished instant-coffee distributor and one Thai bulk instant-coffee ingredient importer. All eight had product, role, model and location evidence on their own sites; no recommended duplicates appeared within each run. **G1: PASS on these small samples.** This does not certify production precision worldwide.

**G2 measures variable cost:** target at most $1.50 per 100 accepted recommendations, hard fail above $2. Finished-product samples cost approximately **$1.10/100** for the four-market example, **$1.25/100** for Australia/Singapore and **$1.20/100** for Thailand. A fresh Thai bulk discovery after removing a redundant query cost **$0.010** search plus **about $0.003** platform usage for one accepted importer, or **$1.30/100**. **G2: PASS on these samples.** Original search fees are included even when reusing discovery for a regression. These are extrapolations from small runs, not runs producing 100 recommendations. Search yields vary; earlier zero-yield runs failed the cost target.

Spending-limit delivery behavior was checked using the official Apify SDK with mocked billing responses. Actual customer invoices and the allocation of child-search fees have not yet been independently verified. Public beta; no sales or income claims.

### Need help?

If a run returns fewer companies, inspect **Storage → RUN_REPORT** for search errors, exclusions, robots restrictions or the time budget. Use precise product wording and realistic partner roles. Do not broaden the query merely to inflate the count.

Report reproducible issues in this Actor's **Issues** tab with the run ID, non-sensitive input and expected behavior. Never post passwords, tokens or personal contact data.

### Multi-country validation

On 5 October 2026, the final four-market re-crawl returned 24 rows with four manually accepted RECOMMENDED companies: De Luna Coffee International (USA), EuroCoffee (UAE), Kaldi Coffee (USA) and Caffé Prima (UK). The full independent Australia/Singapore search dataset returned 16 rows with two accepted recommendations: Bean Around Town and Common Man Coffee Roasters. These are supplier/distributor research candidates; their existing brand portfolios do not establish willingness to buy a new brand.

The four-market original search cost was **$0.037**, plus **about $0.007** owner platform usage: **about $0.044 total**, or **$1.10/100** accepted recommendations. Australia/Singapore cost **$0.019** search plus **about $0.006** platform usage: **about $0.025 total**, or **$1.25/100**. **G2: PASS on these samples.** Console usage displays are rounded. Customer event prices are shown separately above and are not these owner variable costs.

Earlier audits failed because directories, coffee equipment and generic OEM brand claims passed loose filters. Those filters were corrected and all final recommendations manually reviewed. A pre-optimization Thai bulk re-crawl yielded only one recommendation when another site returned errors: approximately **$1.65/100**, **G2 target FAIL**, below the $2 hard ceiling. Removing the redundant query improved the next fresh Thai bulk run to approximately **$1.30/100**. Its top importer was Purandar, while the separate finished benchmark recommended SUM BY DEE / Dao Coffee Thailand: different offer types produced different partners. Website reachability remains variable; no result count or worldwide cost guarantee is offered. OEM/private-label and untested markets still require independent review.

### Search availability

The search child has a 150-second timeout and no paid retries. If it times out with organic results already stored, only those actual results are validated and RUN_REPORT marks discoveryPartial. A timeout without organic results fails explicitly; no placeholder companies are generated.

# Actor input Schema

## `product` (type: `string`):

Coffee, instant coffee, green coffee beans or another precise product; broad coffee searches can require extra review.

## `targetCountry` (type: `string`):

Enter a specific country or Worldwide to search a multi-country batch. Company country still requires official-site location evidence.

## `offerType` (type: `string`):

Commercial model; rankings and evidence gates differ per scenario.

## `partnerTypes` (type: `array`):

Only public B2B company roles supported by official-site evidence.

## `maxResults` (type: `integer`):

Includes explicitly labelled secondary/research cases; never fills quota with recommended raw leads.

## `maxRunSeconds` (type: `integer`):

Crawl time budget. No LLMs, paid proxies or browser rendering; default discovery uses metered Apify Google Search.

## `seedUrls` (type: `array`):

If supplied, validate only these websites (up to 60) without paid search discovery. The same evidence gates apply; supplied websites are not automatically trusted.

## `searchProvider` (type: `string`):

Official metered Google Search: 2 queries per country in Worldwide mode (up to 24 pages), 2-4 for one country; one child run, no add-ons or retries. Separate search fees apply. Free-direct is experimental.

## `searchBudgetUsd` (type: `number`):

Separate child-search technical maximum $0.50. Worldwide searches have more pages and can cost more; final fee depends on account tier. Parent spending limit does not cover this child cap.

## `discoveryDatasetIds` (type: `array`):

Optional reuse of saved organic SERP results; does not charge a search run. Not company seeds. Must be accessible to this account.

## `originalSearchCostUsd` (type: `number`):

Report original discovery cost for honest benchmark accounting, rather than treating cached searches as economically free.

## `targetCountries` (type: `array`):

Choose 1-12 countries for Worldwide search. The quick default sample searches Australia and Singapore; replace this list for other markets. An explicitly empty list selects 12 starter markets. Bounded discovery, not exhaustive coverage.

## Actor input object example

```json
{
  "product": "coffee",
  "targetCountry": "Worldwide",
  "offerType": "Finished branded product",
  "partnerTypes": [
    "Importer",
    "Distributor",
    "Wholesaler"
  ],
  "maxResults": 10,
  "maxRunSeconds": 210,
  "searchProvider": "apify-google",
  "searchBudgetUsd": 0.5,
  "originalSearchCostUsd": 0,
  "targetCountries": [
    "Australia",
    "Singapore"
  ]
}
```

# Actor output Schema

## `results` (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 = {
    "product": "coffee",
    "targetCountry": "Worldwide",
    "maxResults": 10,
    "maxRunSeconds": 210,
    "targetCountries": [
        "Australia",
        "Singapore"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based").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 = {
    "product": "coffee",
    "targetCountry": "Worldwide",
    "maxResults": 10,
    "maxRunSeconds": 210,
    "targetCountries": [
        "Australia",
        "Singapore",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based").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 '{
  "product": "coffee",
  "targetCountry": "Worldwide",
  "maxResults": 10,
  "maxRunSeconds": 210,
  "targetCountries": [
    "Australia",
    "Singapore"
  ]
}' |
apify call dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dream_chaser_2.2mtwd/importer-distributor-finder-evidence-based"
        }
    }
}
```

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/aNvNCcpVL4fraWQU1/builds/ZVb05xckCOgwVbfzJ/openapi.json
