Spain OEPM Trademark & Patent Scraper avatar

Spain OEPM Trademark & Patent Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Spain OEPM Trademark & Patent Scraper

Spain OEPM Trademark & Patent Scraper

Scrape trademark and patent data from Spain's OEPM (Oficina Española de Patentes y Marcas). Extracts BOPI official bulletin publications including trademark registrations, patent filings, Nice classifications, and legal status changes.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Ivo Sandoval

Ivo Sandoval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Spain OEPM Trademarks & Patents Scraper

Scrape trademark and patent data from Spain's OEPM (Oficina Española de Patentes y Marcas). Extracts data from the daily BOPI (Boletín Oficial de la Propiedad Industrial) PDF publications.

Data Source

  • URL: https://sede.oepm.gob.es/
  • API: https://sede.oepm.gob.es/apibopiweb (public, no auth required)
  • Rate limits: None known (be respectful)
  • Auth required: No
  • Publications: Monday–Friday, BOPI Tomo 1 (Trademarks & Distinctive Signs)

Output Example (real data from 2026-08-14)

{
"application_number": "OEPM-M4379366",
"trademark_name": "WhatTheFactura",
"applicant": "Martín Polo , Antonio Samuel",
"nice_classes": [9, 35, 42],
"nice_description": "09 APLICACIONES MOVILES DESCARGABLES; SOFTWARE DE FACTURACION...",
"status": "published",
"filing_date": "11-05-2026",
"publication_date": "2026-08-14",
"modalidad": "M",
"modalidad_label": "Marca",
"representative": "",
"detail_url": "https://ceo.oepm.es/detalleExpediente/M4379366",
"description": "Type: Marca. Denomination: WhatTheFactura. Applicant: Martín Polo..."
}

Output Schema

FieldTypeDescription
application_numberstringOEPM ref (e.g. OEPM-M4379366)
trademark_namestringDenomination or [Figurative mark]
applicantstringApplicant name
nice_classesint[]Nice classification codes
nice_descriptionstringGoods/services text (first 200 chars)
statusstringAlways published (from BOPI)
filing_datestringFiling date (DD-MM-YYYY)
publication_datestringBOPI publication date (YYYY-MM-DD)
modalidadstringType code (M, N, H, etc.)
modalidad_labelstringType label (Marca, Nombre comercial, etc.)
representativestringLegal representative
detail_urlstringLink to CEO OEPM detail page
descriptionstringStructured summary

Input Parameters

ParameterTypeRequiredDescription
search_querystringNoFilter by trademark name or applicant
nice_classesint[]NoFilter by Nice codes (e.g. [9, 42])
date_fromstringNoStart date (YYYY-MM-DD)
date_tostringNoEnd date (YYYY-MM-DD)
record_typestringNotrademark, patent, or both
max_resultsintegerNoMax results (default: 100, max: 10000)
database_urlstringNoPostgreSQL URL for persistence
proxy_configurationobjectNoApify proxy config

Database

  • Database name: datamon_spain_oepm
  • Tables: trademarks, patents
  • Upsert: by application_number (insert or update)

Running

Via Apify CLI

cd actors/spain-oepm
python3.12 -m venv .venv && .venv/bin/pip install -r requirements.txt
apify run --purge

Local runner (no Apify dependency)

cd actors/spain-oepm
# Print to stdout (no DB)
.venv/bin/python runner.py --date-from 2026-08-14 --date-to 2026-08-14 --max-results 10 --no-db
# Persist to PostgreSQL
DATABASE_URL="postgresql+asyncpg://user:pass@host:5432/datamon_spain_oepm" \
.venv/bin/python runner.py --date-from 2026-08-11 --date-to 2026-08-14
# Filter by Nice class 25 (clothing)
.venv/bin/python runner.py --nice-classes 25 --max-results 20 --no-db

Cron (daily, weekdays at 07:00)

0 7 * * 1-5 cd /opt/datamon && DATABASE_URL="..." .venv/bin/python -m actors.spain-oepm.runner >> /var/log/datamon/oepm.log 2>&1

Pricing (Apify Store)

  • Model: Pay-per-event (PPE)
  • Price: $5.00 / 1,000 results

Status

  • Scraper implementation (BOPI PDF parsing with WIPO ST.60 field codes)
  • Database models + migrations
  • Input/output schemas
  • DB persistence (persist.py with upsert)
  • Local runner (runner.py — no Apify dependency)
  • Injectable logger (scraper works with Apify or stdlib logging)
  • Verified against live BOPI API (218 entries parsed from 2026-08-14)
  • apify run works locally
  • Tests
  • Apify Store listing