# OEKO-TEX Certified Textile Suppliers Scraper - Buying Guide (`rel8ble/oeko-tex-suppliers-scraper`) Actor

OEKO-TEX certified textile suppliers scraper and API: mills and factories from the public Buying Guide by standard, country, product level and material. One result = one company: address, website, role e-mail, phone, labels, certified products. $2 per 1,000.

- **URL**: https://apify.com/rel8ble/oeko-tex-suppliers-scraper.md
- **Developed by:** [Giovanni Rich](https://apify.com/rel8ble) (community)
- **Categories:** Lead generation, Business, E-commerce
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 results

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

## OEKO-TEX Certified Textile Suppliers Scraper - Buying Guide

This **OEKO-TEX supplier scraper** turns the public **OEKO-TEX Buying Guide** into a clean **certified textile supplier list**: pick a standard (**STANDARD 100**, **LEATHER STANDARD**, **STeP**, **ECO PASSPORT**, **MADE IN GREEN**, **ORGANIC COTTON**), a country such as `China`, `India`, `Türkiye`, `Bangladesh` or `Portugal`, a product level (yarns, fabrics, dyeing and finishing, accessories, finished goods), a material such as `Cotton` or `Polyester`, and get one row per certified company with **name, street address, post code, city, country, website, role e-mail, phone**, the **labels it holds** and its **certified product levels, product types, materials, uses and product classes**.

Use it as a **textile supplier finder** for sourcing yarn, fabric, trims and garments, an **OEKO-TEX certified manufacturer directory**, a **sustainable textile sourcing list** by country and material, or a **B2B lead list** of certified mills and factories, from your own code, Make, Zapier, n8n or an AI agent.

It reads the Buying Guide over plain HTTP, with **no browser and no login**. The prefilled demo returned 20 STANDARD 100 certified fabric makers in China in 18.5 s in a cloud run on 7 November 2026. **$2.00 per 1,000 results, no start fee.**

**What goes in:** a standard, countries or a region, a product level, product types, materials, search words, a product class. **What comes out:** one row per certified company. **When to use it:** you need suppliers that hold an OEKO-TEX certificate for a kind of textile product in a country.

**What it does not have:** **no prices, no MOQ, no certificate numbers and no validity dates.** The Buying Guide lists who is certified for what, not offers. **No people:** the "Your contact" person on each profile is never read, and only role mailboxes (info@, sales@, export@ ...) are kept; personal mailboxes are dropped.

### What you get

- **Supplier**: company name, street address, post code, city, country, website (malformed entries dropped), role e-mail, phone and fax as filed.
- **Certification**: OEKO-TEX labels held (e.g. STANDARD 100, STeP, MADE IN GREEN), the standard searched, the result-list columns for that standard (e.g. Appendix 4, Appendix 6, Recycling).
- **Certified products**: product levels, product types (woven fabric, yarns, buttons, home textiles ...), materials, intended uses (baby, outer wear, bedding ...), STANDARD 100 product classes.
- **Links**: the company's Buying Guide profile page.

Fill rates measured on 7 November 2026. Demo (20 China fabric makers): street, labels, product types and materials 100%; post code 85%; website 25%; role e-mail 5%. Portugal finished goods with "Only suppliers with a website or e-mail" on: 115 companies matched, 92 kept; website 99%, phone 100%, role e-mail 10%.

### Sample output

Real rows from the prefilled run (STANDARD 100, Fabrics, China, 7 November 2026):

| company | city | labels | product types | materials | website |
|---|---|---|---|---|---|
| Acetech Textiles Limited | Huizhou | STANDARD 100 | Knitted fabric | Mixtures of synthetic fibres | https://www.acetech-textile.com |
| Advance Denim Co., Ltd. | Foshan | STANDARD 100, STeP, MADE IN GREEN | Woven fabric | Cotton, Elastanes and other elastic fibres | |
| Baodingshi Tianma Interlining Co., Ltd. | Baoding, Hebei | STANDARD 100 | Interlinings, Linings, Non-woven | Mixtures with Viscose, Polyester | |
| Beijing GBSN Textile Co., Ltd. | Beijing | STANDARD 100 | Woven fabric | Mixtures of synthetic fibres, Mixtures with Viscose | http://www.gbsn.net |
| Black Peony Textile Co., Ltd. | Changzhou | STANDARD 100, STeP | Woven fabric | Cotton, Elastanes and other elastic fibres | https://www.blackpeony.com/zh |

### Use cases

- **Textile sourcing**: every STANDARD 100 certified woven-fabric mill in Türkiye or Portugal
- **Baby and children's products**: suppliers certified in product class I
- **Trims and accessories**: certified button, zipper and label makers by country
- **Supplier vetting**: check that a supplier is listed with the label you need
- **Lead generation** for chemical, machinery and logistics vendors selling to certified mills

### Pricing

**$2.00 per 1,000 results** (pay per result, $0.002 each), no start fee, platform usage included. A result is one company saved to your dataset. Searches that find nothing, duplicates, companies skipped by "Only suppliers with a website or e-mail" and failed requests are never charged. Set **Max results per search** to cap the cost of a run.

The Buying Guide is free to browse. You pay for the ready rows, the profile fields and the filters, not for access.

No other Store actor covered the OEKO-TEX Buying Guide in a live Apify Store search on 8 November 2026 ("oeko-tex", "textile suppliers", "textile manufacturers", "fabric suppliers"); the nearest certified-supplier actor read WRAP facilities at $4.00 per 1,000. Prices change; check before you compare.

### FAQ

**Where does the data come from?** The public OEKO-TEX Buying Guide at services.oeko-tex.com, where certificate holders appear with their certified products. This actor is not affiliated with or endorsed by OEKO-TEX and uses no OEKO-TEX label or logo. OEKO-TEX is a trademark of its owner, named here only to describe the data.

**Does a row prove a valid certificate?** It shows that the company is listed in the Buying Guide for the labels shown. Check a specific product's certificate with the label number on the product, through OEKO-TEX's own label check, before you rely on it.

**Why are e-mails missing on many rows?** Most profiles list a named person's mailbox. Those are not copied. Only role mailboxes are kept.

**What does one search mean?** Every combination of search word, country, material and product type is one search with its own row limit. The standard, product level and product class apply to all of them. Two countries and two materials give four searches.

**How fresh is it?** Each run queries the live Buying Guide.

**Known gaps**: results come in alphabetical order; profile links carry a session token and may stop working after some time (search again to refresh them); a website is kept only when it is a valid address; country names follow the Buying Guide (e.g. "Türkiye", "Korea, South"), but "Turkey", "South Korea", "USA" and "UK" are understood.

### How to use

1. Open the actor, pick the **OEKO-TEX standard** and enter **countries** (e.g. `China`), or a region.
2. Optional: a **product level**, **product types**, **materials**, **search words**, a **product class**.
3. Leave **Read company profiles** on for address, website and certified products; turn it off for a fast name-and-town list.
4. Set **Max results per search** (start with 20), click **Start**, then export the dataset as CSV, Excel or JSON.

### Input

| Field | What it does |
|---|---|
| `standard` | 100, leather, step, ecopass, mig, organic-cotton. |
| `countries` | Company country; each is its own search. |
| `regions` | A whole region, used when no country is given. |
| `productLevel` | Raw materials / yarns, Fabrics, Commission business, Accessories, End-user goods. |
| `productTypes` | Types inside the levels (Woven fabric, Yarns, Buttons ...). |
| `materials` | Certified material (Cotton, Polyester, Wool ...). |
| `searchTerms` | Free text, e.g. `denim` or a company name. |
| `productClass` | STANDARD 100 class I to IV. |
| `includeProfiles` | Read each company profile (address, website, products). |
| `requireWebsiteOrEmail` | Save only companies with a website or role mailbox. |
| `maxResultsPerSearch` | Companies per search; 0 = all. |

Unknown values are ignored and listed in the run summary. A filter where no value is valid stops the run instead of widening the search.

### Input example

```json
{
    "standard": "100",
    "countries": ["Türkiye", "Portugal", "India"],
    "productLevel": "Fabrics",
    "materials": ["Cotton"],
    "includeProfiles": true,
    "requireWebsiteOrEmail": true,
    "maxResultsPerSearch": 200
}
```

### Output example

One real row from the prefilled run (7 November 2026):

```json
{
    "customerId": "17081",
    "company": "Beijing GBSN Textile Co., Ltd.",
    "country": "China",
    "city": "Beijing",
    "postalCode": "101399",
    "street": "Room 633, 6 Floor, No.1, Linji Industry Park, No. 53 shunren Road, Renhe Village, Shunyi District",
    "location": "101399 Beijing",
    "website": "http://www.gbsn.net",
    "email": "hr@gbsn.net",
    "phone": null,
    "fax": null,
    "searchedStandard": "STANDARD 100",
    "labels": ["STANDARD 100"],
    "productLevels": ["Fabrics"],
    "productTypes": ["Woven fabric"],
    "usage": ["Gentlemen", "Ladies"],
    "materials": ["Mixtures of synthetic fibres", "Mixtures with Viscose", "Natural and Synthetic Fibre Mixtures", "Polyamide", "Polyester"],
    "productClasses": ["II"],
    "annexFlags": { "Appendix 4": true, "Appendix 6": false, "Recycling": false },
    "profileLoaded": true,
    "profileUrl": "https://services.oeko-tex.com/newoekotex/portal/for-new-website/customer_profile/17081~1xPlLn~U0p3QmtMQzcJrg6XXmVJLsZKH00/",
    "guideUrl": "https://services.oeko-tex.com/buying-guide/",
    "searchLabel": "country=China & standard=STANDARD 100 & level=Fabrics",
    "position": 4,
    "scrapedAt": "2026-11-07T18:41:17.755Z"
}
```

A `RUN_SUMMARY` record in the key-value store lists, per search, how many companies match, how many rows were saved, why the search stopped and any input that was ignored.

### Integrations

Run it from the Apify API, schedule it in Apify, or connect it to Make, Zapier, n8n, Google Sheets, Slack or a webhook. AI agents can call it through the Apify MCP server: give a country and a product level, get certified suppliers back.

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble

# Actor input Schema

## `standard` (type: `string`):

Which certification to search. STANDARD 100 = tested textiles (yarn to finished goods), LEATHER STANDARD = leather articles, STeP = certified production sites, ECO PASSPORT = textile chemicals, MADE IN GREEN = traceable products, ORGANIC COTTON.

## `countries` (type: `array`):

Country of the certified company, e.g. "China", "India", "Türkiye", "Portugal", "Bangladesh", "Vietnam". Each country is its own search. Unknown names are listed in the run summary.

## `regions` (type: `array`):

Used only when no country is given: search a whole region.

## `productLevel` (type: `string`):

Supply-chain stage: raw materials / yarns, fabrics, commission business (dyeing, finishing, printing), accessories, or finished end-user goods.

## `productTypes` (type: `array`):

Product types inside the levels, e.g. "Woven fabric", "Knitted fabric", "Yarns", "Buttons", "Zippers", "Home textiles". Each is its own search. Known types: Textile raw materials, fibres, Combed fibres, Open-end yarn, Carded yarns, woollen yarns, Combed yarns, worsted yarns, Ring spun yarn, Monofilament yarn, Untextured filament yarn, Textured filament yarn, Wound yarns / core yarns, Fancy and textured yarns, Knitted grey cloth, Woven grey cloth, Foils, membranes, Foams, Loose filling materials, Knitted fabric, Woven fabric, Non-woven, Linings, Interlinings, Coated textile fabrics, Felt, Pre-treatment, Dyeing, Printing, Coating, Woven fabric finishing, Knitted fabric finishing, Yarn dyeing, Sewing and embroidery yarn, Buttons, Press Studs and Rivets, Other Fasteners (buckles, hooks and eyes etc.), Zippers, Lace, Trimmings, Appliqué and Embroidery, Applications, Printed and woven labels ...

## `materials` (type: `array`):

Certified material. Each is its own search. One of: Cotton, Other Vegetable Fibres, Wool and other animal hairs, Silk, Viscose and other cellulosic fibres, Polyester, Polyamide, Elastanes and other elastic fibres, Other synthetic fibres, Mixtures of natural fibres, Mixtures of synthetic fibres, Natural and Synthetic Fibre Mixtures, Mixtures with Viscose, Feathers and Down, Other animal materials, Wood, paper and board, Other vegetable materials, Natural and synthetic latex, Synthetic foam, Synthetic films, Plastic, Brass, copper, bronze, Steel, Precious Metals (gold, silver, platinum), Glass, rhinestone, Other metallic materials, Metal coated plastic parts.

## `searchTerms` (type: `array`):

Free text the Buying Guide searches in company and product data, e.g. "denim", "towel", "lace", or a company name. Each is its own search.

## `productClass` (type: `string`):

I = articles for babies, II = with skin contact, III = without skin contact, IV = decoration material.

## `includeProfiles` (type: `boolean`):

On: one extra request per company adds street address, website, role e-mail, phone and the certified products (labels, levels, types, materials, uses). Off: name, country and town from the result list only.

## `requireWebsiteOrEmail` (type: `boolean`):

On: companies whose profile lists neither a valid website nor a role mailbox are read but not saved and not charged.

## `maxResultsPerSearch` (type: `integer`):

Companies to read per search (alphabetical). Every combination of search word, country, material and product type is one search. 0 = everything that matches. You pay per row saved, so start small.

## `maxRequestRetries` (type: `integer`):

Retries per failed request.

## Actor input object example

```json
{
  "standard": "100",
  "countries": [
    "China"
  ],
  "productLevel": "Fabrics",
  "includeProfiles": true,
  "requireWebsiteOrEmail": false,
  "maxResultsPerSearch": 20,
  "maxRequestRetries": 5
}
```

# Actor output Schema

## `results` (type: `string`):

One row per OEKO-TEX certified company: name, address, website, role e-mail, labels, certified product levels, product types, materials and uses.

## `summary` (type: `string`):

Counts per search, stop reasons and any ignored input.

# 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 = {
    "standard": "100",
    "countries": [
        "China"
    ],
    "productLevel": "Fabrics",
    "maxResultsPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("rel8ble/oeko-tex-suppliers-scraper").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 = {
    "standard": "100",
    "countries": ["China"],
    "productLevel": "Fabrics",
    "maxResultsPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("rel8ble/oeko-tex-suppliers-scraper").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 '{
  "standard": "100",
  "countries": [
    "China"
  ],
  "productLevel": "Fabrics",
  "maxResultsPerSearch": 20
}' |
apify call rel8ble/oeko-tex-suppliers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rel8ble/oeko-tex-suppliers-scraper"
        }
    }
}
```

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/RlY4flpL76Zrf93CI/builds/syJ0bL8VZm3nMsv7j/openapi.json
