# Pagini Aurii Romanian Company Contacts Scraper (`automation-lab/romania-trade-company-contact-directory`) Actor

Search Romanian Pagini Aurii trade listings by sector and city; export only companies with publicly listed phone and email, category, city, and profile URL.

- **URL**: https://apify.com/automation-lab/romania-trade-company-contact-directory.md
- **Developed by:** [Automation Lab](https://apify.com/automation-lab) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.72 / 1,000 item extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Pagini Aurii Romanian Company Contacts Scraper

Refresh a list of **Pagini Aurii Romanian company contacts** by trade keyword and city. This Actor reads public paginiaurii.ro search cards and company profiles, and returns only companies that display **both a business phone and an email address**. Results include the directory's own sector label, city, source URL, and retrieval timestamp. It does not guarantee coverage or a minimum number of results.

### Who is it for?

- Romanian B2B sales researchers compiling sector-specific company lists.
- Procurement teams identifying publicly listed local contractors.
- Data teams scheduling a repeat search and comparing exported datasets outside the Actor.

### Why use this Actor?

Unlike a generic directory export, the output excludes listings lacking either contact method. Sector labels come from the actual directory listing, not a guess based on the query. A city filter excludes out-of-city listings even when the directory search mixes locations. Deduplication uses the company profile URL across searches. No login, contact enrichment, or external company websites are involved.

### What does it extract?

| Field | Meaning |
| --- | --- |
| `companyName` | Displayed directory business name |
| `phone` | Listed telephone string |
| `email` | Listed business email |
| `sector` | Directory's category label |
| `city` | City/location segment of the profile URL, which may include a Bucharest sector |
| `profileUrl` | Company page on paginiaurii.ro |
| `searchUrl` | Search page or supplied profile that produced the row |
| `scrapedAt` | UTC retrieval timestamp |

The default dataset contains one row per qualifying profile URL. Download the dataset as CSV, JSON, or Excel using Apify's export controls.

### Getting started

1. Enter one or more Romanian trade keywords such as `instalatii electrice` or `tamplarie` in `sectors`.
2. Optionally choose a `city`, for example `Bucuresti`.
3. Set `maxItems` and `maxPagesPerSearch` to bound the run.
4. Run the Actor. Check the dataset for public business contacts; empty results may mean no listings meet both-contact and sector criteria.
5. Export the resulting dataset to your spreadsheet or integration.

If no URLs or sectors are supplied, the default searches cover architecture, locksmithing, electrical installations, stonemasonry, and carpentry. Default searches may be sparse; begin with one sector and a modest page limit.

### Inputs

| Input | Purpose |
| --- | --- |
| `sectors` | Up to 20 Romanian trade search keywords. A row's directory category must match the keyword(s) as well as belong to the selected sector. |
| `city` | Optional city filter applied to both discovered listings and supplied URLs; Bucharest sector subdivisions match Bucuresti. |
| `startUrls` | HTTPS paginiaurii.ro `/Search/`, `/cauta/`, or `/companii/` URLs. Search URLs retain their own keyword; supplied profiles must belong to the trade scope. |
| `maxItems` | Maximum unique qualifying rows, 1–10,000; default 100. |
| `maxPagesPerSearch` | Maximum pages per search, 1–100; default 10. |

When both `sectors` and `startUrls` are set, the Actor processes **only** the supplied URLs and uses sectors as filters; it does not start additional keyword searches. A location in a supplied `/cauta/` URL must agree with `city` when provided. Use a real directory URL; other hosts and arbitrary pages are rejected.

### Example search input

```json
{
  "sectors": ["instalatii electrice"],
  "city": "Bucuresti",
  "maxItems": 20,
  "maxPagesPerSearch": 2
}
```

### Example result

A representative record from a local Bucuresti electrical search (phone and email are already public directory fields):

```json
{
  "companyName": "EDA SISTEM ELECTRIC",
  "phone": "0745-654 292",
  "email": "office@edasistemelectric.ro",
  "sector": "Instalaţii electrice",
  "city": "BUCURESTI, SECTOR 6",
  "profileUrl": "https://www.paginiaurii.ro/companii/BUCURESTI,+SECTOR+6/L6254066/EDA+SISTEM++ELECTRIC/",
  "searchUrl": "https://www.paginiaurii.ro/cauta/instalatii+electrice%2Bnear%2BBucuresti/1/",
  "scrapedAt": "2026-09-26T20:00:00.000Z"
}
```

Timestamps and live source spelling/contacts may change. The example illustrates the output shape, not a guaranteed match.

### How much does it cost to export Romanian trade company contacts?

The Actor charges a one-time `start` event per run and an `item` event for each qualifying dataset record. Failed/rejected listings do not incur an item event. The measured BRONZE price is $0.005 per run plus $0.024532 per qualifying company. At BRONZE, one record costs about $0.0295, five cost $0.1277, and 25 cost $0.6183; these are Actor charges, not guarantees of output volume. The item tiers are FREE $0.028212, BRONZE $0.024532, SILVER $0.019135, and GOLD/PLATINUM/DIAMOND $0.014719 per record, plus the $0.005 start event. The tiers depend on the customer's aggregate monthly Apify Store spend, not the number of rows purchased in this Actor. Review the current Apify pricing panel for applicable tiers; estimates are not guaranteed invoices. Payout estimates may be adjusted for refunds, fraud, disputes, taxes, corrections, and clawbacks.

### Limits and reliability

Directory searches can include other cities or unrelated categories; these are filtered. A business must expose both phone and email directly on a supported page. No phone/email is synthesized, and a business may appear with an outdated public value. The Actor follows paginated search results up to the page bound, without a guaranteed total count. Transient network/429/5xx errors are retried twice; an unrecognized or blocked page fails the run rather than pretending there are zero matches. It does not crawl other websites or discover hidden email addresses. No AI model or AI provider processes the search or results.

### Integrations and repeat refreshes

Schedule the same input on Apify, then export each run's default dataset to CSV or use a Make/Zapier webhook for an internal spreadsheet. For change tracking, compare `profileUrl` and `scrapedAt` between run datasets in your own pipeline; the Actor itself does not send alerts or retain a history. Respect outreach laws and suppression lists before contacting anyone.

### API usage

Run using a token held in your environment, not checked into a script:

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~romania-trade-company-contact-directory/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"sectors":["instalatii electrice"],"city":"Bucuresti","maxItems":20}'
```

JavaScript with `apify-client`:

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/romania-trade-company-contact-directory').call({
    sectors: ['instalatii electrice'], city: 'Bucuresti', maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Python with `apify-client`:

```python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/romania-trade-company-contact-directory').call(
    run_input={'sectors': ['instalatii electrice'], 'city': 'Bucuresti', 'maxItems': 20})
for row in client.dataset(run['defaultDatasetId']).iterate_items():
    print(row['companyName'], row['phone'], row['email'])
```

### MCP

In Claude Code, register the Apify MCP endpoint:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/romania-trade-company-contact-directory"
```

For Claude Desktop, Cursor, or VS Code with remote MCP support, configure the same endpoint in each client's MCP server settings:

```json
{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/romania-trade-company-contact-directory"}}}
```

Example prompts for the Apify MCP tool:

- “Run `automation-lab/romania-trade-company-contact-directory` with `sectors=[\"instalatii electrice\"]`, `city=Bucuresti`, `maxItems=5`; summarize the dataset with source URLs.”
- “Look up the public EDA SISTEM ELECTRIC profile using `startUrls` and show only listed business contacts.”

Each MCP client may require its own Apify authentication setup.

### Legality and responsible use

This independent Actor is not affiliated with or endorsed by Pagini Aurii. Use only publicly displayed business contacts for a lawful purpose. Follow directory terms, applicable privacy and marketing laws (including GDPR/ePrivacy), opt-out requirements, and local outreach restrictions. A listed contact is not consent to unsolicited campaigns. Keep requests bounded and avoid personal-contact inference. Inputs are sent to paginiaurii.ro for search/profile retrieval; the dataset stores public business contacts and Apify retains datasets and run logs according to your account settings. The Actor maintains no separate cache or contact history. Delete datasets and logs through Apify account storage controls. For support, use the Actor's Apify Store issue/report channel.

### FAQ

**Why did a search yield zero rows?** The directory might have results but no business listing in the requested city/category with *both* contacts. Try another real trade keyword and inspect the page manually. A challenge or layout failure instead produces an error.

**Does the Actor guarantee thousands of emails?** No. Available public business contact pairs depend on the source and chosen filters; do not plan a campaign around a fixed count.

**Can I supply a company profile?** Yes, use a public `/companii/` URL; it still has to show both contacts and a matching trade category. Add `sectors` and `city` to constrain it further.

### Related Actors

For other directories rather than Romanian Pagini Aurii trade searches, consider [USSB Directory Business Listings Scraper](https://apify.com/automation-lab/ussb-directory-business-listings). Its source and fields differ; it is not a fallback for Romanian listings.

# Changelog

This Actor's version history is a separate document: https://apify.com/automation-lab/romania-trade-company-contact-directory/changelog.md

# Actor input Schema

## `sectors` (type: `array`):

Romanian trade categories to search when no URLs are supplied, or to filter supplied URLs. Defaults to architecture, locksmithing, electrical installation, stonemasonry and carpentry unless URLs are supplied.

## `city` (type: `string`):

Optional Romanian city to use with sector searches, for example Bucuresti. Applied to discovered listings and supplied search/profile URLs; listings outside this city are excluded.

## `startUrls` (type: `array`):

Optional source search or company profile URLs on www.paginiaurii.ro. A search URL retains its own query/location; a supplied profile must have a listed trade category and both contacts.

## `maxItems` (type: `integer`):

Stop after this many unique businesses with publicly listed phone and email; sparse categories may return fewer.

## `maxPagesPerSearch` (type: `integer`):

Bound pagination for each keyword or supplied search URL (20 listings per page typically).

## Actor input object example

```json
{
  "sectors": [
    "instalatii electrice"
  ],
  "city": "Bucuresti",
  "startUrls": [
    {
      "url": "https://www.paginiaurii.ro/cauta/instalatii+electrice%2bnear%2bBucuresti/1/"
    }
  ],
  "maxItems": 20,
  "maxPagesPerSearch": 10
}
```

# Actor output Schema

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

Qualified Pagini Aurii business names, contacts, directory sectors, cities and source URLs.

# 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 = {
    "sectors": [
        "instalatii electrice"
    ],
    "city": "Bucuresti",
    "startUrls": [
        {
            "url": "https://www.paginiaurii.ro/cauta/instalatii+electrice%2bnear%2bBucuresti/1/"
        }
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/romania-trade-company-contact-directory").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 = {
    "sectors": ["instalatii electrice"],
    "city": "Bucuresti",
    "startUrls": [{ "url": "https://www.paginiaurii.ro/cauta/instalatii+electrice%2bnear%2bBucuresti/1/" }],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/romania-trade-company-contact-directory").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 '{
  "sectors": [
    "instalatii electrice"
  ],
  "city": "Bucuresti",
  "startUrls": [
    {
      "url": "https://www.paginiaurii.ro/cauta/instalatii+electrice%2bnear%2bBucuresti/1/"
    }
  ],
  "maxItems": 20
}' |
apify call automation-lab/romania-trade-company-contact-directory --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/romania-trade-company-contact-directory"
        }
    }
}
```

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/fGQWw3QD9T3CUWLOR/builds/VcXmEudQL0gshlh1K/openapi.json
