欧企查 API 文档
欧洲企业数据查询接口 · 9 个独立接口 · 覆盖 33 个欧洲国家/地区
v1.0 · 2026快速开始
在线调试
填入 API Key,选择接口和参数,点击「发送」即可在线查看结果。
所有接口都通过同一个入口访问:
通过 action 参数区分不同接口,通过 post_type 指定国家数据源。
最小请求示例
curl "https://欧企查.cn/api.php?action=list&post_type=de_data&api_key=YOUR_API_KEY"
欧企查.cn 在程序中建议使用 Punycode 形式
xn--hoqs02dpjc.cn,避免部分 HTTP 客户端解析异常。
认证方式
所有请求必须携带 API Key,两种方式任选其一(推荐方式一):
| 方式 | 写法 |
|---|---|
| 方式一:URL 参数 | ?api_key=YOUR_API_KEY |
| 方式二:请求头 | X-API-Key: YOUR_API_KEY |
api_key,其次才是 Header。
若你的请求返回「缺少 API Key」,请改用 URL 参数方式。
密钥权限说明
每个 API 密钥的权限由以下几项决定。若需调整,请联系管理员。
| 项目 | 说明 | 示例 |
|---|---|---|
| 可访问国家 | 该密钥能查询哪些国家的数据 | 英国、挪威、德国、法国 |
| 可调用接口 | 密钥能使用哪些查询功能 | 公司列表、工商基础信息、LEI全球法人识别码、管理人员/受益人、欧盟商标信息、财务报告、企业登记历史、分支机构、联系方式 |
| 有效期 | 密钥的生效与失效时间 | 2026-01-01 至 2026-12-31 |
| 每日额度 | 每天最多调用次数(自然日 0 点重置) | 200 次/天 |
| 每分钟速率 | 每分钟最多调用次数 | 120 次/分钟 |
| 状态 | 密钥是否启用 | 已启用 / 已停用 |
X-RateLimit-Remaining-Day: 18342
若返回 403 无权访问该数据源 或 403 无权调用该接口,说明密钥未开通对应权限,请联系管理员开通。
支持的国家
共 33 个数据源,覆盖欧盟 27 国 + 欧洲其他国家
欧盟 27 国 + 英国
enterprise_data 英国at_data 奥地利be_data 比利时bg_data 保加利亚hr_data 克罗地亚cy_data 塞浦路斯cz_data 捷克dk_data 丹麦ee_data 爱沙尼亚fi_data 芬兰fr_data 法国de_data 德国gr_data 希腊hu_data 匈牙利ie_data 爱尔兰it_data 意大利lv_data 拉脱维亚lt_data 立陶宛lu_data 卢森堡mt_data 马耳他nl_data 荷兰pl_data 波兰pt_data 葡萄牙ro_data 罗马尼亚sk_data 斯洛伐克si_data 斯洛文尼亚es_data 西班牙se_data 瑞典欧洲其他国家
no_data 挪威is_data 冰岛li_data 列支敦士登ch_data 瑞士接口列表(9 个)
所有接口通用参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
api_key | string | 是 | 你的 API 密钥 |
action | string | 是 | 接口名 |
post_type | string | 是 | 国家数据源 |
通用返回结构
所有接口返回 JSON,大部分接口包含以下公共字段:
company_name:公司名registration_info:注册号- 具体数据字段:见各接口说明
错误时返回:
{
"error": "错误信息",
"code": 403
}
1. 公司列表 action=list
按国家搜索公司,返回公司名 + 注册号。用于后续获取注册号。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
search | string | 否 | 公司名/注册号模糊搜索 |
limit | int | 否 | 每页条数,默认 50 |
last_id | int | 否 | 游标分页,用上次返回的 next_last_id |
status | string | 否 | 按状态筛选 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=list&post_type=pl_data&search=Orlen&limit=10&api_key=YOUR_KEY"
返回示例:
{
"post_type": "pl_data",
"page": 1,
"limit": 10,
"next_last_id": 60953722,
"total": 10,
"list": [
{ "registration_info": "0000028860", "company_name": "Orlen S.A." }
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
post_type | string | 数据源 |
page | int | 当前页码 |
limit | int | 每页条数 |
next_last_id | int | 下一页游标,传回 last_id |
total | int | 当前页条数(非总数) |
list[].registration_info | string | 注册号 |
list[].company_name | string | 公司名 |
next_last_id 作为下次请求的 last_id 参数,而不是 page+1。
返回的 total 是当前页条数,不是总数。
2. 工商基础信息 action=basic
返回税号、EUID、股票代码、地址、公司类型、状态、成立/解散日期、主营业务、行业分类、曾用名等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=basic&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"basic_data": {
"tax_id": "7740001454",
"EUID": "PLKRS.0000028860",
"stock_code": "PKN.WA PSKOF",
"region": "PŁOCK",
"country": "POLAND",
"address": "CHEMIKÓW 7, 09-411 PŁOCK...",
"company_type": "SPÓŁKA AKCYJNA",
"status": "Active",
"incorporate_date": "2001-07-19",
"dissolution_date": null,
"main_activities": null,
"sec_activities": null,
"pre_names": ["POLSKI KONCERN NAFTOWY ORLEN..."],
"industries": ["Polski Koncern Naftowy..."]
}
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
basic_data.tax_id | string | 税号 |
basic_data.EUID | string | 欧洲唯一标识符 |
basic_data.stock_code | string | 股票代码 |
basic_data.region | string | 地区 |
basic_data.country | string | 国家 |
basic_data.address | string | 注册地址 |
basic_data.company_type | string | 公司类型 |
basic_data.status | string | 状态 |
basic_data.incorporate_date | string | 成立日期 |
basic_data.dissolution_date | string | 解散日期 |
basic_data.main_activities | string | 主营业务 |
basic_data.sec_activities | string | 次要业务 |
basic_data.pre_names | array | 曾用名(最多 10 个) |
basic_data.industries | array | 行业分类(最多 10 个) |
3. LEI全球法人识别码 action=lei
返回 LEI 编码、机构类别、注册状态、LOU 等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=lei&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"lei_data": {
"Entity.LegalName": "ORLEN SPÓŁKA AKCYJNA",
"LEI": "259400VVMM70CQREJT74",
"Entity.LegalJurisdiction": "PL",
"Registration.RegistrationStatus": "ISSUED",
"Registration.ManagingLOU": "259400L3KBYEVNHEJF55"
}
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
lei_data | object | LEI 原始字段(Entity.* / Registration.* 等),无数据时为 null |
lei_data.LEI | string | LEI 编码 |
lei_data.Entity.LegalName | string | 法人名称 |
lei_data.Entity.LegalJurisdiction | string | 司法管辖区 |
lei_data.Registration.RegistrationStatus | string | 注册状态 |
lei_data.Registration.ManagingLOU | string | 注册管理单位 |
4. 管理人员/受益人 action=managers
返回董事、监事、商业代理人等,含姓名、职务、国籍、任职起止日期。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=managers&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"managers": [
{
"manager_name": "LITERACKI WITOLD",
"manager_id": null,
"locality": "Poland",
"country": "PL",
"description": "董事会成员 WICEPREZES ZARZĄDU",
"start_date": null,
"end_date": null,
"corporate_register_number": null
}
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
managers[].manager_name | string | 姓名 |
managers[].manager_id | string | 内部 ID |
managers[].locality | string | 所在地 |
managers[].country | string | 国家 |
managers[].description | string | 职务描述 |
managers[].start_date | string | 任职日期 |
managers[].end_date | string | 卸任日期 |
managers[].corporate_register_number | string | 公司注册号 |
5. 欧盟商标信息 action=trademarks
按公司名查询欧盟商标,返回申请人、商标详情、商品服务分类。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 是 | 公司名(非注册号) |
company_name 而非 registration_info,
按公司名匹配商标申请人。
curl "https://xn--hoqs02dpjc.cn/api.php?action=trademarks&post_type=pl_data&company_name=Orlen%20S.A.&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"applicants": [
{
"applicant_name": "Orlen S.A.",
"applicant_number": "003151149",
"country": "PL",
"address": "Chemików 7, 09-411, Plock",
"trademarks": [
{
"application_number": "003151149",
"trademark_name": "ORLEN",
"trademark_type": "INDIVIDUAL",
"trademark_feature": "Figurative",
"submission_date": "2003-04-03",
"registration_date": "2005-10-13",
"expiry_date": "2033-04-03",
"registration_status": "Registered",
"goods_services": "1: Saturated and unsaturated..."
}
]
}
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
applicants[].applicant_name | string | 商标申请人 |
applicants[].applicant_number | string | 申请人编号 |
applicants[].country | string | 国家 |
applicants[].address | string | 地址 |
applicants[].trademarks[] | array | 商标列表 |
trademarks[].application_number | string | 申请号 |
trademarks[].trademark_name | string | 商标名 |
trademarks[].trademark_type | string | 类型 |
trademarks[].trademark_feature | string | 特征 |
trademarks[].submission_date | string | 提交日期 |
trademarks[].registration_date | string | 注册日期 |
trademarks[].expiry_date | string | 到期日期 |
trademarks[].registration_status | string | 注册状态 |
trademarks[].goods_services | string | 商品与服务分类 |
Trademark_details 为准。
6. 财务报告 action=accounts
返回财务报表文件列表。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=accounts&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"account_filings": [
{
"report_id": "120396",
"file_name": "Odpis Pełny.pdf",
"file_date": "2024-01-15",
"file_url": "https://..."
}
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
account_filings[].report_id | string | 报告 ID |
account_filings[].file_name | string | 文件名 |
account_filings[].file_date | string | 文件日期 |
account_filings[].file_url | string | 文件下载链接 |
7. 企业登记历史 action=filings
返回登记文件、质押、任命等历史记录。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=filings&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"filings": [
{
"report_id": "120396",
"description": "Odpis Pełny (Complete copy of KRS)",
"cos_url": "https://...",
"date": null,
"appointment_date": null,
"officer_name": null,
"charge_number": null,
"charge_creation_date": null,
"category_1": null, "currency_1": null, "figure_1": null,
"category_2": null, "currency_2": null, "figure_2": null,
"category_3": null, "currency_3": null, "figure_3": null,
"category_4": null, "currency_4": null, "figure_4": null,
"category_res_1": null, "description_1": null,
"category_res_2": null, "description_2": null,
"category_res_3": null, "description_3": null,
"category_res_4": null, "description_4": null
}
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
filings[].report_id | string | 报告 ID |
filings[].description | string | 描述 |
filings[].cos_url | string | 文件下载链接 |
filings[].date | string | 日期 |
filings[].appointment_date | string | 任命日期 |
filings[].officer_name | string | 官员姓名 |
filings[].charge_number | string | 质押编号 |
filings[].charge_creation_date | string | 质押创建日期 |
filings[].category_1~4 | string | 财务类别 |
filings[].currency_1~4 | string | 货币 |
filings[].figure_1~4 | string | 金额 |
filings[].category_res_1~4 | string | 决议类别 |
filings[].description_1~4 | string | 决议描述 |
8. 分支机构 action=branches
返回分支机构编号、注册日期、地址、是否活跃、行业、联系方式等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=branches&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"branches": [
{
"branch_no": "Siret 12345678900012",
"register_date": "2010-05-01",
"address": "Warszawa, ul. ...",
"if_active": "1",
"branch_industry": "Trade",
"sec_industry": null,
"region": "MAZOWIECKIE",
"country": "POLAND",
"web": ["https://...", "https://..."],
"tel": ["+48 22 ..."],
"email": ["a@b.pl"]
}
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
branches[].branch_no | string | 分支编号(法国前缀 Siret) |
branches[].register_date | string | 注册日期 |
branches[].address | string | 地址 |
branches[].if_active | string | 是否活跃 |
branches[].branch_industry | string | 行业 |
branches[].sec_industry | string | 次要行业 |
branches[].region | string | 地区 |
branches[].country | string | 国家 |
branches[].web | array | 官网(多个) |
branches[].tel | array | 电话(多个) |
branches[].email | array | 邮箱(多个) |
9. 联系方式 action=contacts
返回官网、电话、邮箱(数组形式)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
registration_info | string | 是 | 注册号 |
curl "https://xn--hoqs02dpjc.cn/api.php?action=contacts&post_type=pl_data®istration_info=0000028860&api_key=YOUR_KEY"
返回示例:
{
"company_name": "Orlen S.A.",
"registration_info": "0000028860",
"contacts": [
{
"web": ["https://www.orlen.pl"],
"tel": ["+48 22 ..."],
"email": ["zarzad@orlen.pl"]
}
]
}
返回字段:
| 字段 | 类型 | 说明 |
|---|---|---|
company_name | string | 公司名 |
registration_info | string | 注册号 |
contacts[].web | array | 官网 |
contacts[].tel | array | 电话 |
contacts[].email | array | 邮箱 |
错误码
| HTTP | 错误信息 | 原因 / 解决 |
|---|---|---|
| 400 | 缺少 company_name 参数 | 商标接口必传公司名 |
| 400 | 缺少 registration_info 参数 | 多数接口必传注册号 |
| 400 | 无效或缺失的 post_type | 检查国家代码是否在白名单 |
| 400 | 无效的 action | 检查 action 拼写 |
| 403 | 缺少 API Key | 加 ?api_key= |
| 403 | 无效的 API Key | Key 不存在,联系管理员 |
| 403 | 该 API Key 已被停用 | status=0 |
| 403 | 该 API Key 已过期 | valid_until 已过 |
| 403 | 无权访问该数据源(post_type) | Key 未开通该国家权限 |
| 403 | 无权调用该接口(action) | Key 未开通该接口权限 |
| 404 | 未找到该公司…数据 | 注册号不对或该库无数据 |
| 429 | 请求过于频繁 / 今日调用已达上限 | 读响应头 Retry-After 后重试 |
完整示例(Python)
以查询波兰公司 Orlen S.A. 为例,先搜注册号,再拉全部数据:
import requests
import time
BASE_URL = "https://xn--hoqs02dpjc.cn/api.php"
API_KEY = "YOUR_API_KEY"
def call_api(action, post_type="pl_data", retry_on_429=True, **params):
"""调用 API,自动处理限流重试"""
query = {"action": action, "post_type": post_type, "api_key": API_KEY, **params}
for attempt in range(3):
r = requests.get(BASE_URL, params=query, timeout=30)
# 非 JSON 响应(404 HTML / 502 等)
try:
data = r.json()
except ValueError:
raise RuntimeError(f"非JSON响应 [{r.status_code}]: {r.text[:200]}")
# 429 限流:读 Retry-After 等待后重试
if r.status_code == 429:
retry_after = int(r.headers.get("Retry-After", 60))
if retry_on_429 and attempt < 2:
print(f"⚠️ 触发限流,{retry_after} 秒后重试(第 {attempt+1} 次)")
time.sleep(retry_after)
continue
raise RuntimeError(f"[429] {data.get('error')}")
# 其他错误
if r.status_code != 200:
raise RuntimeError(f"[{r.status_code}] {data.get('error')}")
# 打印剩余额度(可选)
remaining = r.headers.get("X-RateLimit-Remaining-Day")
if remaining is not None:
print(f" 今日剩余额度: {remaining}")
return data
raise RuntimeError("重试 3 次仍失败")
# ==================== 主流程 ====================
# 1) 搜公司,拿注册号
lst = call_api("list", search="Orlen", limit=10)
reg_info = None
for it in lst["list"]:
if it["company_name"].strip().lower() == "orlen s.a.":
reg_info = it["registration_info"]
break
print("注册号:", reg_info) # 0000028860
if not reg_info:
raise SystemExit("未找到 Orlen S.A.")
# 2) 拉详情
results = {}
for act in ["basic", "managers", "filings", "accounts", "branches", "contacts", "lei"]:
try:
results[act] = call_api(act, registration_info=reg_info)
print(f"✔ {act}")
except RuntimeError as e:
print(f"✘ {act}: {e}")
# 3) 商标(用公司名)
try:
trademarks = call_api("trademarks", company_name="Orlen S.A.")
print("商标申请人数:", len(trademarks["applicants"]))
except RuntimeError as e:
print(f"✘ trademarks: {e}")
其他语言
PHP:
$url = "https://xn--hoqs02dpjc.cn/api.php?" . http_build_query([
'action' => 'basic',
'post_type' => 'pl_data',
'registration_info' => '0000028860',
'api_key' => 'YOUR_KEY',
]);
$data = json_decode(file_get_contents($url), true);
print_r($data);
JavaScript (fetch):
const url = "https://xn--hoqs02dpjc.cn/api.php?" + new URLSearchParams({
action: "basic",
post_type: "pl_data",
registration_info: "0000028860",
api_key: "YOUR_KEY"
});
const res = await fetch(url);
const data = await res.json();
console.log(data);
常见问题
Q1: 返回 403「缺少 API Key」怎么办?
把 key 放到 URL 参数里:?api_key=YOUR_KEY,不要只依赖 Header。
Q2: 中文域名解析失败?
用 Punycode 域名 xn--hoqs02dpjc.cn 代替 欧企查.cn。
Q3: 如何分页获取全部公司?
用 list 接口,首次不传 last_id,之后每次传上次返回的 next_last_id,直到返回空列表。
Q4: 商标接口为什么不用注册号?
商标库按公司名匹配申请人,所以用 company_name。若同名公司多,结果可能包含多个申请人。
Q5: 注册号格式不一致怎么办?
先用 list 搜出准确注册号,再传给其他接口。德国数据会自动做 HRA/HRB 等格式兼容。
Q6: 如何申请 API Key?
联系管理员,提供:公司名、用途、需要的国家(post_type)、需要的接口(action)。
Q7: 触发 429 怎么办?
读取响应头 Retry-After(秒),等待后重试。不要立即重试,否则会持续被限流。
