# Wikidata Entity API (`automly/wikidata-entity-api`) Actor

Search Wikidata entities and export structured entity records with labels, descriptions, aliases, sitelinks, and search-match context.

- **URL**: https://apify.com/automly/wikidata-entity-api.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.80 / 1,000 entity record produceds

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

## Wikidata Entity API

Wikidata Entity API helps you search Wikidata and export structured entity records with labels, descriptions, aliases, sitelinks, and search-match context. Use it for research, enrichment, knowledge graph lookups, and content workflows.

### Why use this actor?

This actor turns Wikidata into a clean dataset you can use in AI workflows, research pipelines, and knowledge enrichment tasks. It is especially useful when you need canonical entity IDs, readable descriptions, and quick context about a person, company, product, or topic.

### Features

- Search Wikidata by keyword and language
- Hydrate one or more Wikidata entity IDs
- Include alias summaries for richer entity context
- Optionally include sitelink counts and the English Wikipedia URL
- No API key required
- Pay-per-event pricing aligned to successful entity records only

### Input

#### Search for entities

```json
{
  "mode": "search",
  "query": "OpenAI",
  "maxResults": 20,
  "language": "en"
}
```

#### Hydrate entity IDs

```json
{
  "mode": "entity",
  "entityIds": "Q95,Q76,Q42",
  "includeAliases": true,
  "includeSitelinks": true
}
```

#### Input fields

- `mode` (string): `search`, `entity`, or `both`.
- `query` (string): search query used when `mode` includes search.
- `entityIds` (string): comma-separated Wikidata IDs such as `Q42,Q76`.
- `language` (string): language code used for search.
- `maxResults` (integer): maximum records to return, capped at 50.
- `includeAliases` (boolean): include a compact alias sample when hydrating entities.
- `includeSitelinks` (boolean): include sitelink counts and English Wikipedia URL when available.

### Output

Sample record:

```json
{
  "recordType": "search-result",
  "query": "OpenAI",
  "entityId": "Q21708200",
  "title": "OpenAI",
  "label": "OpenAI",
  "description": "American artificial intelligence research organization",
  "conceptUri": "http://www.wikidata.org/entity/Q21708200",
  "wikidataUrl": "https://www.wikidata.org/wiki/Q21708200",
  "pageId": 23747017,
  "repository": "wikidata",
  "matchType": "label",
  "matchLanguage": "en",
  "matchText": "OpenAI",
  "entityType": "",
  "aliasesCount": 0,
  "aliasSample": "",
  "sitelinksCount": 0,
  "englishWikipediaUrl": "",
  "claimsCount": 0,
  "language": "en"
}
```

### Use cases

- Build knowledge graphs and enrichment workflows
- Normalize company, person, and topic references
- Pull canonical identifiers for AI and search pipelines
- Map aliases and related names into downstream systems
- Improve entity resolution in content and research tools

### Limits and caveats

- Search results are relevance-based, so very broad queries may require tighter wording.
- Entity hydration is most useful when you provide Wikidata IDs.
- Some records may have sparse English labels or descriptions.

### Pricing

This actor uses pay-per-event pricing:

| Event | Price | When it's charged |
|-------|-------|-------------------|
| `entity-record-produced` | $0.0008 / item | Per search result or entity record successfully produced |

You pay only for records returned by the actor.

### FAQ

#### Do I need an API key?

No. Wikidata is public.

#### Can I search in another language?

Yes. Set `language` to the desired language code.

#### What if my run charge limit is reached?

The actor stops gracefully after the last chargeable record and keeps already produced items.

# Actor input Schema

## `mode` (type: `string`):

Choose whether to search for entities, hydrate entity IDs, or do both in one run.

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

Wikidata search query for search mode. Example: OpenAI, climate change, Tesla.

## `entityIds` (type: `string`):

Comma-separated Wikidata entity IDs for entity mode, e.g. Q42,Q76,Q95.

## `language` (type: `string`):

Language for search labels and descriptions. Common values: en, ja, de, fr, es.

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

Maximum records to return. Values above 50 are clamped for reliable runs.

## `includeAliases` (type: `boolean`):

Include a compact alias summary when entity details are fetched.

## `includeSitelinks` (type: `boolean`):

Include sitelink counts and the English Wikipedia URL when available.

## Actor input object example

```json
{
  "mode": "search",
  "query": "OpenAI",
  "entityIds": "",
  "language": "en",
  "maxResults": 50,
  "includeAliases": true,
  "includeSitelinks": false
}
```

# Actor output Schema

## `records` (type: `string`):

All records produced by this run.

## `overview` (type: `string`):

Dataset presented using the dataset schema overview view.

# 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("automly/wikidata-entity-api").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("automly/wikidata-entity-api").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 automly/wikidata-entity-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/wikidata-entity-api"
        }
    }
}

```

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/E9lLywPF5MHAd2F2I/builds/SUjuC6C9KPGeThCaG/openapi.json
