# Armenia Supplier Public Contracts (`reestri/am-supplier-contracts`) Actor

Every public procurement contract an Armenian company has won: buyers with tax IDs, values, dates, procedure, appeals. Search by supplier tax ID (ՀՎՀՀ) or name. From the official contracts registry (PPCM), indexed weekly, with evidence on every record.

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

## Pricing

from $100.00 / 1,000 public contract records

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

## Armenia Supplier Public Contracts

Every public procurement contract an Armenian company has won, from the official
contracts registry (PPCM, Ministry of Finance / armeps.am): the buying authority with
its tax ID, contract value and savings against estimate, signing date and deadline,
procedure type, number of bidders, appeals. Search by the supplier's 8-digit tax ID
(ՀՎՀՀ) or by name. Indexed weekly from the public registry; evidence on every record.

### What you can do with it

- **Due diligence and KYB**: see whether a counterparty lives on state contracts,
  with whom, for how much, and how often it wins single-source awards.
- **Sanctions and integrity screening**: state-contract exposure is a standard
  risk factor; appeals and unlawful-act notes are included as published.
- **Market and competitor intelligence**: a supplier's full award history in one call.
- **Joins with the register**: `supplierTaxId` is the same ՀՎՀՀ as the "Tax id" in
  our Armenia Company Registry tool, so ownership and contracts link cleanly.
- **AI agents**: available as an MCP tool.

### Input

| Field | Type | Description |
|---|---|---|
| `taxId` | string | 8-digit supplier tax ID; takes precedence over `query`. |
| `query` | string | Full or partial supplier name (as registered, Armenian or Latin). |
| `maxSuppliers` | integer | For name search, how many matching suppliers to expand (default 3). |
| `maxContracts` | integer | Max contract records to return and charge for, newest first (default 50). |

### Output

One `contract` record per contract (illustrative until first production runs):

```json
{
  "resultType": "contract",
  "country": "AM",
  "contractId": "4a1372fc-…",
  "number": "201706046",
  "supplierName": "…",
  "supplierTaxId": "02614085",
  "buyerName": "«…» ՊՓԲԸ",
  "buyerTaxId": "035093365",
  "buyerType": "OTHER",
  "title": "…",
  "titleEn": "Procurement of fuel for the needs of …",
  "procedure": "electronic auction",
  "procurementType": "GOODS",
  "contractValueTotal": 747000,
  "contractSaving": 45000,
  "currency": "AMD",
  "dateSigned": "2018-08-23",
  "deadline": "2018-12-28",
  "bidders": 2,
  "appeals": "Չկան",
  "match": { "method": "tax_id_exact", "score": 1, "ambiguous": false, "candidates": 1 },
  "evidence": { "sourceUrl": "https://armeps.am/ppcm/public/contracts/contract", "contractId": "…", "registryAsOf": "2026-08-29" }
}
```

Plus `not_found` (no contracts for that supplier in the registry index) and
`unavailable` (index missing; the run also fails, never a negative).

### Scope and hygiene

- Source: the public contracts registry's own JSON service, read weekly into an
  index; `registryAsOf` is the index date. Line items (CPV codes, quantities) are
  not included in v1.
- The registry publishes supplier emails, bank account numbers and internal staff
  identifiers; **we strip all of them at ingest** and never store them. Individual
  entrepreneurs appear as registered (their business name).
- Armenia has announced a new procurement platform for 2027; this tool will migrate
  when it launches.

### Pricing

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

# Actor input Schema

## `taxId` (type: `string`):

8-digit taxpayer ID; takes precedence over the name query.

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

Full or partial supplier name (Armenian or Latin as registered).

## `maxSuppliers` (type: `integer`):

How many matching suppliers to expand when searching by name.

## `maxContracts` (type: `integer`):

Maximum contract records to return and charge for (newest first).

## Actor input object example

```json
{
  "query": "Օիլ",
  "maxSuppliers": 3,
  "maxContracts": 50
}
```

# Actor output Schema

## `contracts` (type: `string`):

One record per public contract won by the supplier (`contract`), newest first, 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 = {
    "query": "Օիլ"
};

// Run the Actor and wait for it to finish
const run = await client.actor("reestri/am-supplier-contracts").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 = { "query": "Օիլ" }

# Run the Actor and wait for it to finish
run = client.actor("reestri/am-supplier-contracts").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 '{
  "query": "Օիլ"
}' |
apify call reestri/am-supplier-contracts --silent --output-dataset

```

## MCP server setup

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

```

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/eXlOnbuwLMfBVvT1G/builds/upQBLdS2DNf2ch1ei/openapi.json
