# EUIPO Designs Scraper: EU Registered Designs (DesignView) (`dltik/euipo-designs-scraper`) Actor

Search EU registered designs (EUIPO RCD) + WIPO/national offices via the official DesignView. Product, Locarno class, status, owner, dates, design image. Applicant→company. No API key. $0.01/result.

- **URL**: https://apify.com/dltik/euipo-designs-scraper.md
- **Developed by:** [Walid](https://apify.com/dltik) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 design 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## EUIPO Designs Scraper: EU Registered Designs (DesignView)

**⭐ Bookmark this actor** — the Apify Store ranks actors by bookmarks, so it's the single strongest signal to keep this EUIPO Designs Scraper visible and maintained.

Search **EU registered designs** (EUIPO Registered Community Designs) and the wider **DesignView** network — WIPO Hague and national design offices — by product, applicant/holder, Locarno class, status or dates. Get clean JSON: product indication, design/application/registration number, status, holder, Locarno classes, filing/registration/expiry dates and the **design image**, plus optional **holder → company** resolution. No API key, no login: powered by the free official DesignView backend.

### What this EUIPO Designs Scraper does

DesignView's website is one-design-at-a-time and can't be automated cleanly. This actor turns any design search into an API you can call at scale and export to JSON, CSV or Excel:

- **Search designs** by product keyword (`query`) and/or applicant/holder name (`applicant`), filtered by office, status and Locarno class.
- **Full detail on demand** — Locarno classes with descriptions, designers, holder address, representatives, renewals and publication data.
- **Holder intelligence** — resolve each design's owner to a real company record (portfolio mapping, competitive design monitoring, IP due diligence).
- **Design image URLs** — direct links to the registered representation and thumbnail.
- **Lifecycle signals** — free derived fields: `lifecycle_stage` and `days_until_expiry`.

### Who uses it

- **Design & IP attorneys** running design searches and freedom-to-operate checks.
- **Product & industrial designers** monitoring registered designs in their Locarno class.
- **Brand-protection teams** tracking a competitor's design portfolio.
- **Data teams** building design, holder or competitive-intelligence datasets.

### Input

Provide `query` (product) and/or `applicant` (holder):

```json
{
  "query": "chair",
  "offices": ["EM"],
  "statuses": ["Registered"],
  "maxResults": 50,
  "enrichDetails": true
}
```

| Field | Type | Description |
|---|---|---|
| `query` | string | Product keyword (indication of product), e.g. `chair`. |
| `applicant` | string | Holder/owner name, e.g. `apple`. |
| `offices` | array | Office codes. Defaults to `["EM"]` (EUIPO). `[]` = all offices. |
| `statuses` | array | e.g. `Registered`, `Design lapsed`. |
| `locarnoClasses` | array | Locarno codes, e.g. `["06","09"]`. |
| `enrichDetails` | bool | Full detail per design (Locarno, designers, renewals). |
| `enrichApplicant` | bool | Resolve holder → company record. |
| `maxResults` | int | 1–5000. |

### Output

```json
{
  "application_number": "001234567-0001",
  "indication_of_product": "CHAIR",
  "office_code": "EM",
  "status": "Registered",
  "lifecycle_stage": "registered",
  "applicant_name": "HERMAN MILLER, INC.",
  "locarno_classes": ["06-01 — Seats"],
  "application_date": "2019-05-10",
  "registration_date": "2019-05-14",
  "days_until_expiry": 1234,
  "design_image_url": "https://www.tmdn.org/tmview/api/design/image/EM...-001",
  "designview_url": "https://www.tmdn.org/tmdsview-web/#/dsview/detail/EM..."
}
```

### Pricing

| Event | Price | What you get |
|---|---|---|
| `design-result` | **$0.01** | Every design: product, status, office, holder, dates, image + free derived fields (lifecycle, days-to-expiry). |
| `design-detail` | +$0.01 | Opt-in full detail per design (Locarno classes, designers, holder address, representatives, renewals). |
| `applicant-enriched` | +$0.005 | Opt-in holder → company record resolution. |

### FAQ

**Do I need an EUIPO or DesignView API key?** No. The actor uses the free public DesignView search backend — no key, no login.

**What is a Registered Community Design (RCD)?** A unitary EU-wide design right registered at EUIPO, covering the appearance of a product (shape, pattern, ornamentation). DesignView also aggregates WIPO Hague and national design registers.

**Can I search beyond EUIPO?** Yes — set `offices` (e.g. `["EM","WO"]`) or an empty list `[]` to search all offices in the network.

**What are Locarno classes?** The international classification of industrial designs by product type (e.g. 06 = furnishing, 09 = packaging, 32 = logos/graphic symbols).

# Actor input Schema

## `query` (type: `string`):

Search designs by their indication of product. Examples: 'chair', 'bottle', 'sneaker', 'packaging'. Provide this OR 'applicant' (or both).

## `applicant` (type: `string`):

Search designs by the applicant/holder (design owner) name. Examples: 'apple', 'samsung', 'nike'. Provide this OR 'query' (or both).

## `offices` (type: `array`):

Two-letter IP office codes. Defaults to \['EM'] = EUIPO (Registered Community Designs). Add others to widen: 'WO' = WIPO Hague, 'FR', 'DE', 'GB', 'US'. Set to an empty list to search ALL design offices in the network.

## `statuses` (type: `array`):

Filter by design status. Friendly values are accepted: 'Registered' (in-force registered designs), 'Lapsed', 'Filed', 'Published'. You can also pass the exact DesignView labels, e.g. 'Registered and fully published', 'Design lapsed'. Leave empty for all statuses.

## `locarnoClasses` (type: `array`):

Locarno classification codes (the international design-goods classification), e.g. '06' (furnishing), '09' (packaging), '32' (graphic symbols/logos). Leave empty for all.

## `enrichDetails` (type: `boolean`):

When ON, fetches the full DesignView detail record for EACH result: Locarno classes with descriptions, designers, detailed applicant info (address, nationality), representatives, renewals and publication data. Runs concurrently. Billed as a 'design-detail' event per enriched result. Leave OFF for fast product/status/owner search.

## `enrichApplicant` (type: `boolean`):

When ON, resolves each design's applicant/holder to a real company. French applicants are matched live to their SIREN + size + sector via the official register; applicants from 30+ other countries get a pointer to the matching national company-registry actor. Billed as 'applicant-enriched' only for applicants resolved to a real company record. Best combined with enrichDetails (which provides the applicant's country).

## `detailConcurrency` (type: `integer`):

Parallel DesignView detail requests when enrichDetails is ON (1-8). Default 4 stays under the soft rate-limit.

## `pageSize` (type: `integer`):

Results per DesignView page. Default 30.

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

Maximum designs to return. Start with 30 to validate, scale once happy. Billing is per result returned.

## `proxyConfig` (type: `object`):

Apify datacenter proxy is enabled by default — DesignView blocks plain cloud IPs at the network edge. Switch to residential for very high frequency.

## Actor input object example

```json
{
  "offices": [
    "EM"
  ],
  "statuses": [],
  "locarnoClasses": [],
  "enrichDetails": false,
  "enrichApplicant": false,
  "detailConcurrency": 4,
  "pageSize": 30,
  "maxResults": 30,
  "proxyConfig": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

The scraped design records.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/euipo-designs-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("dltik/euipo-designs-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 '{}' |
apify call dltik/euipo-designs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dltik/euipo-designs-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/He6dii6KKhluWNjah/builds/73LwMKO4LGNu0ynUU/openapi.json
