# Georgia Person → Companies Search (`reestri/ge-person-search`) Actor

Reverse search Georgia’s public business registry: enter a person or organisation name and get every company they participate in (partner, director, founder) with identification codes, roles and status. Clean JSON for KYC, sanctions screening and due diligence.

- **URL**: https://apify.com/reestri/ge-person-search.md
- **Developed by:** [Soso Pkhakadze](https://apify.com/reestri) (community)
- **Categories:** Agents, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 participation row (person × company × role)s

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Georgia Person → Companies Search

Reverse search of Georgia's public business registry (NAPR). Enter a person's name, or
an organisation's name, and get every company they participate in, as director,
partner/shareholder, founder or representative, with the company's identification
code and the role, in clean JSON. The forward company search tells you who is behind
one company; this tells you everything one person or holding company is behind.

### What you can do with it

- **Sanctions-evasion and network mapping**: a designated person or their relatives
  often sit behind several Georgian entities; the registry's reverse search exposes
  the set in one query.
- **Enhanced due diligence**: enumerate a director's other companies before
  onboarding; spot dormant, suspended or liquidating entities in the same hands.
- **Corporate-group mapping**: search a holding company as participant to list its
  Georgian subsidiaries.
- **AI agents**: available as an MCP tool for counterparty research.

### Input

| Field | Type | Description |
|---|---|---|
| `firstName`, `lastName` | string | Person's name; Georgian script matches best. |
| `organisationName` | string | Organisation as participant (use instead of a person). |
| `maxResults` | integer | Max participation rows to return and charge for (default 25). |

### Output

One `participation` record per person × company × role:

```json
{
  "resultType": "participation",
  "country": "GE",
  "companyNumber": "404569285",
  "companyNameLocal": "შპს სილქნეტ ჰოლდინგი",
  "companyNameLatin": "shps silknet holdingi",
  "participantNameLocal": "…",
  "participantNameLatin": "…",
  "participantType": "person",
  "personKey": "<sha256 of the published scheme; raw personal number never output>",
  "role": "shareholder",
  "roleLocal": "პარტნიორი",
  "match": { "method": "participant_person_name", "score": 0.8, "ambiguous": true, "candidates": 7 },
  "evidence": { "sourceUrl": "…", "retrievedAt": "…", "sha256": "…" }
}
```

Plus `not_found` (registry answered, no participations) and `unavailable` (registry
could not be read; the run is also marked failed, never a negative).

Common names are ambiguous: `match.ambiguous` and `match.candidates` tell you when a
result set mixes several people. Combine with the personKey to group rows belonging
to the same registry identity.

### Personal data

The registry publishes participants' names and, for individual entrepreneurs, personal
numbers. This tool outputs names as published and replaces personal numbers with
`personKey` = sha256("reestri-person-v1:GE:" + number), a published scheme so you can
join records while the raw number never leaves the registry. You are the data
controller for your screening use; the source is a statutory public register.

### Pricing

Pay per event: one `lookup` per query (including `not_found`), one
`participation-record` per row returned.

### Related tools

Georgia company lookup · Armenia company lookup + beneficial owners · Kazakhstan
legal-entity lookup · Multi-country change monitor.

### Use it from an AI agent or an automation

- **Claude / Cursor / any MCP client:** add `https://mcp.apify.com/?tools=reestri/ge-person-search` (Apify token as bearer). Tools: `find_companies_by_person / find_companies_by_organisation`.
- **Claude Code:** `claude mcp add --transport http reestri https://mcp.apify.com/?tools=reestri/ge-person-search`
- **LangChain / CrewAI:** `ApifyActorsTool("reestri/ge-person-search")` from `langchain-apify` / `crewai-tools`.
- **n8n / Make / Zapier:** the official Apify node, Actor `reestri/ge-person-search`, then map the dataset items.
- **REST:** `POST https://api.apify.com/v2/acts/reestri~ge-person-search/run-sync-get-dataset-items?token=…` with the input JSON.

### Which country is this?

Georgia the country (Sakartvelo, capital Tbilisi, registry NAPR at enreg.reestri.gov.ge), not the US state. For the US state use a Secretary of State search tool instead.

# Actor input Schema

## `firstName` (type: `string`):

Georgian script works best (e.g. გიორგი); Latin input is transliterated automatically where possible.

## `lastName` (type: `string`):

Georgian script works best (e.g. ბერიძე).

## `organisationName` (type: `string`):

Search companies where this organisation is a partner/founder. Use instead of a person name.

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

Maximum rows to return and charge for.

## Actor input object example

```json
{
  "organisationName": "სილქნეტ",
  "maxResults": 25
}
```

# Actor output Schema

## `participations` (type: `string`):

One record per person/organisation × company × role (`participation`), or `not_found` / `unavailable`, each with match and evidence blocks.

# 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 = {
    "organisationName": "სილქნეტ"
};

// Run the Actor and wait for it to finish
const run = await client.actor("reestri/ge-person-search").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 = { "organisationName": "სილქნეტ" }

# Run the Actor and wait for it to finish
run = client.actor("reestri/ge-person-search").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 '{
  "organisationName": "სილქნეტ"
}' |
apify call reestri/ge-person-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,reestri/ge-person-search"
        }
    }
}

```

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/1Jsybj2hepaxXF8Rx/builds/Yx3JIdNbIuMUyIkR2/openapi.json
