# Peru Arbitration Rulings Scraper - Annulment & Enforcement (`recordsdata/peru-laudos-arbitrales-scraper`) Actor

Scrape Peru's Poder Judicial rulings on arbitral award annulment and enforcement (laudos arbitrales, anulación de laudo): grounds, outcomes, full text and PDFs for 6,000+ rulings. Filter by year, chamber, ground. Export CSV, Excel, JSON. No login or API key.

- **URL**: https://apify.com/recordsdata/peru-laudos-arbitrales-scraper.md
- **Developed by:** [RecordsData](https://apify.com/recordsdata) (community)
- **Categories:** Business, Education
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.73 / 1,000 ruling records

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

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3" alt="RecordsData" width="100%" />
</p>

## ⚖️ Peru Arbitration Rulings Scraper: Annulment & Enforcement of Laudos

> **Peru Arbitration Rulings Scraper** extracts court rulings on the annulment and enforcement of arbitral awards (laudos arbitrales) from the official Poder Judicial de Peru portal. Each row has the case number, official resolution type, a plain outcome, the annulment grounds named in the ruling, cited articles of the Arbitration Law, the summary and the PDF link. Optional full text, statistics and an opt-in monitor mode that returns only rulings you have not seen in earlier runs. No login or API key. Export CSV, Excel, JSON or XML.

The Poder Judicial portal "Buscador de Resoluciones sobre Anulación y Ejecución de Laudos Arbitrales" lists **6,008 rulings from 2014 to 2026** (counter read on 2026-10-06), 10 per page and with no export. This Actor adds what the portal does not give you: derived outcomes, annulment grounds (Article 63.1 of the Arbitration Law), cited articles, date windows, signed PDF text and statistics such as the annulment success rate per year.

### 📋 What does the Peru Arbitration Rulings Scraper do?

- **Full-content search** in Spanish, with and without accents; each term runs as its own search and results are merged and de-duplicated.
- **15 ready-made topics** such as due process, public procurement, construction, foreign awards and enforcement.
- **Filters** by year, subject, chamber, resolution type, outcome, annulment ground, keywords, case number and date range.
- **Derived fields**: `outcome`, `annulmentGrounds` (letters a to g of Article 63.1) and `arbitrationLawArticles`.
- **Full text and PDFs** (optional), including parties and the original file.
- **Statistics mode**: counts grouped by year, subject, chamber, outcome or ground (for example the annulment success rate per year).
- **Monitor mode** (`onlyNew`): only rulings you have not seen in earlier runs.

### 📊 What data can you extract from Peruvian arbitration rulings?

| Field | Description |
| --- | --- |
| 🧾 `recordType` | `ruling` or `statistic` |
| 🆔 `resolutionId` | Portal UUID (also the PDF key) |
| 📌 `caseNumber`, `caseType` | Case number and type (Demanda, Apelación, Inhibición...) |
| 📄 `resolutionType` | Official type, for example "Sentencia infundada" |
| 🏁 `outcome` | Derived: `claim-granted`, `claim-dismissed`, `partially-granted`, `claim-inadmissible`, `confirmed-on-appeal`, `reversed-on-appeal`, `other` |
| 🧾 `subject` | Official subject (ANULACION DE LAUDOS ARBITRALES, EJECUCION DE LAUDOS ARBITRALES...) |
| 🏢 `chamber` | Sala that issued the ruling |
| 📅 `resolutionDate`, `resolutionYear` | ISO date and year |
| 📝 `summary`, 🏷 `keywords` | Official summary and keywords |
| 🔖 `annulmentGrounds` | Letters a to g of Article 63.1 named in the summary or keywords |
| 📚 `arbitrationLawArticles` | Articles cited next to "Ley de Arbitraje" or "Decreto Legislativo 1071" |
| 📎 `pdfUrl` | Official PDF link |
| 📜 `fullText`, `textChars`, `pdfPages`, `pdfSizeKb`, `captionFields`, `parties`, 💾 `pdfFileUrl` | Added when full text or PDF saving is on |
| 🔢 `caseSequence`, `caseYear`, `courtCode`, `instanceCode`, `specialtyCode`, `unitNumber`, `incidentCode`, `matchedQuery` | Parts of the case number, and the query that found the row |
| 🕒 `scrapedAt`, `error` | Timestamp; `error` appears only on error rows (never charged) and holds the message |

`annulmentGrounds` and `arbitrationLawArticles` are optional columns: they appear only on rulings whose official summary or keywords name a ground or cite an article, and are omitted otherwise (no empty arrays). A missing column means "not stated", not "no ground".

#### 🧪 Sample output: annulment ruling

Real row from a cloud run on 2026-10-07:

```json
{
  "recordType": "ruling",
  "resolutionId": "2640217c-a1dd-4fed-96bd-69d8c5793cfb",
  "caseNumber": "00164-2026-0-1866-SP-CO-01",
  "caseType": "Demanda",
  "resolutionType": "Sentencia infundada",
  "outcome": "claim-dismissed",
  "subject": "ANULACION DE LAUDOS ARBITRALES",
  "chamber": "1° SALA COMERCIAL",
  "resolutionDate": "2026-09-25",
  "resolutionYear": 2026,
  "summary": "ES INFUNDADO EL RECURSO DE ANULACIÓN SUSTENTADO EN LAS CAUSALES B) Y F) DEL ARTÍCULO 63 DE LA LEY DE ARBITRAJE ...",
  "keywords": ["VALORACIÓN PROBATORIA", "VICIO DE MOTIVACION"],
  "annulmentGrounds": ["b", "f"],
  "arbitrationLawArticles": [63],
  "pdfUrl": "https://jurisprudencia.pj.gob.pe/jurisprudenciaweb/ServletDescarga?uuid=2640217c-a1dd-4fed-96bd-69d8c5793cfb",
  "scrapedAt": "2026-10-07T19:32:21.719Z"
}
```

With full text on, the same ruling adds `textChars`, `pdfPages`, `parties` and the stored PDF link.

#### 📈 Sample output: statistics row

Statistics mode on the 436 annulment rulings of 2023, grouped by outcome (cloud run, 232 seconds):

```json
{ "recordType": "statistic", "groupedBy": "outcome", "outcome": "claim-dismissed", "count": 359, "shareOfRulings": 0.8234, "rulingsCounted": 436 }
```

The same run returned 48 granted (11.0%), 20 inadmissible (4.6%) and 9 partially granted (2.1%) rulings.

### 💰 How much does it cost to scrape Peruvian arbitration rulings?

Pay per event, no subscription. **Error rows, empty searches and failed runs are never charged.**

| Event | What you get | Price (FREE plan) |
| --- | --- | --- |
| `ruling-record` | One ruling with all metadata fields | $0.01 (Apify paid plans from $0.007735) |
| `ruling-fulltext` | Full text of the PDF, only when it has a text layer | $0.03 |
| `ruling-pdf-file` | The original PDF saved in the key-value store | $0.015 |
| `statistics-record` | One aggregated statistic row | $0.015 |

Worked example at FREE-plan prices: 10 rulings without PDFs cost $0.10 (10 `ruling-record` events), so 1,000 rulings cost 1,000 x $0.01 = $10.00. A ruling with text and saved PDF costs $0.055, so 1,000 of them cost $55.00. Set a maximum charge per run and the Actor stops cleanly at that limit. Free Apify accounts get a 10-item preview per run.

### 🚀 How do I scrape Peru arbitration rulings in 3 steps?

1. Open the **Input** tab, pick a **topic** or type Spanish search terms, and set filters such as year, outcome or annulment ground.
2. Optional: switch on **Add full text of each ruling**, **Save the original PDFs** or the **Statistics** mode.
3. Click **Run** and download CSV, Excel, JSON or XML.

Example input:

```json
{ "searchTexts": ["anulación de laudo"], "subjects": ["ANULACION DE LAUDOS ARBITRALES"], "maxItems": 10 }
```

### 🔔 Only new rulings (monitor mode)

Turn on `onlyNew` and the Actor skips every ruling this same search already returned in an earlier run, so a scheduled run delivers just what is new. Skipped rulings are not charged. Use `stateKey` for separate monitors and `resetSeen` to start over.

- The seen list lives in a named key-value store, `peru-laudos-seen`, in **your own Apify account**.
- A search is identified by its terms, filters, date range and `stateKey`. Changing `maxItems` or the full text options keeps the same monitor; changing a term, filter or date starts a new one.
- `maxItems` means "up to N new rulings". A ruling is marked as seen only after it was saved and charged.
- Statistics mode ignores `onlyNew`. The list keeps the 200,000 most recent ids per monitor.

Measured on 2026-10-07 with `maxItems: 3`: the first run delivered 3 rulings, the second the next 3, and a run on an already delivered window charged nothing.

Example input for a weekly monitor:

```json
{
  "subjects": ["ANULACION DE LAUDOS ARBITRALES"],
  "onlyNew": true,
  "maxItems": 100,
  "stateKey": "annulments-weekly"
}
```

Attach this input to a schedule and add a webhook on "Run succeeded" to send new rows to Slack, email or Google Sheets. Runs with zero new rulings cost nothing.

### ⚙️ Input parameters

| Parameter | Meaning |
| --- | --- |
| `searchTexts`, `topics`, `includeAccentVariants` | Full-text search terms, ready-made topics, search with and without accents (default on) |
| `years`, `subjects`, `chambers`, `resolutionTypes`, `outcomes`, `annulmentGrounds`, `keywords`, `summaryContains`, `caseNumbers`, `dateFrom`, `dateTo` | Filters |
| `sortBy`, `sortDirection`, `maxItems` | Order (default newest first) and limit (default 10) |
| `includePdfText`, `savePdfFiles`, `maxTextChars` | Full text, saved PDFs, text length cap (default 300,000 characters) |
| `onlyNew`, `stateKey`, `resetSeen` | Monitor mode: return only rulings not delivered by an earlier run of the same search (default off), a monitor name, and a reset switch |
| `mode`, `statisticsBy` | `rulings` (default) or `statistics`, and the grouping dimensions |
| `concurrency`, `proxyConfiguration` | Parallel portal sessions (default 3) and proxy (default Apify Residential, Peru) |

### 📤 Output and speed: how long does a run take?

Measured on 2026-10-06 in the cloud: 10 rulings with metadata only took 52 s, 3 rulings with full text and saved PDFs took 29 s, and statistics on the 436 rulings of 2023 took 232 s. Full-corpus statistics read every matching ruling, so plan for minutes to tens of minutes. Free accounts compute statistics on the first 200 matching rulings only.

### 🆚 How does it compare with other ways to get this data?

Compared with the portal by hand (10 rows per page, no export) or a generic web scraper, this Actor gives parallel reads, export, derived outcome and ground fields, full text and yearly statistics.

A search of the Apify Store on 2026-10-06 for "laudos arbitrales", "peru court rulings" and "peru poder judicial" found no other Actor for this portal. For price context, case-law Actors for other countries charge from $0.001 to $0.021 per record (Store, 2026-10-06), so $0.01 per ruling sits in the middle; full text is priced higher because rulings are long documents.

### 💼 What can you do with arbitration ruling data?

- **Annulment strategy**: list every ruling where ground b (right of defense) annulled an award, by chamber and year.
- **Public procurement**: measure how often awards involving state entities are annulled.
- **Enforcement risk**: pull enforcement rulings for a counterparty.
- **Legal AI and research**: build a corpus of Peruvian arbitration case law with full text.

### 🔌 How do I call it from the API or automate it?

Schedule runs with `onlyNew: true`, then send the dataset to Make, Zapier, n8n, Slack, Airbyte or Google Sheets.

```bash
curl -X POST "https://api.apify.com/v2/acts/recordsdata~peru-laudos-arbitrales-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"subjects":["ANULACION DE LAUDOS ARBITRALES"],"maxItems":50}'
```

### ⚖️ Is it legal to scrape Peruvian court rulings?

The Actor collects only what the official Poder Judicial portal shows publicly to any visitor, with no login and no access control bypassed. Rulings can contain personal data of parties and lawyers, so you are responsible for complying with Peru's Ley 29733 and the portal's terms of use. Party names are returned only when the PDF has labeled caption lines. This is not legal advice. The Actor is independent and not affiliated with the Poder Judicial del Peru.

### 🤖 Peru Arbitration Rulings Scraper MCP server for AI agents

AI agents can call this Actor through the Apify MCP server at `https://mcp.apify.com?tools=RecordsData/peru-laudos-arbitrales-scraper`. The URL loads only this Actor as a tool.

Add this to your MCP client configuration (Claude Desktop, Cursor, VS Code):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=RecordsData/peru-laudos-arbitrales-scraper"
    }
  }
}
```

Example agent prompt:

> Use the Peru Arbitration Rulings Scraper to get the 50 most recent annulment rulings that granted the claim on ground b (right of defense), and summarize which chambers issued them.

An agent should choose this tool when it needs structured Peruvian case law on the annulment or enforcement of arbitral awards (outcomes, grounds, cited articles, full text or yearly statistics). The tool takes the same fields as the Input parameters table above.

### ❓ Frequently asked questions

#### How many Peru arbitration rulings does the scraper cover?

The Peru Arbitration Rulings Scraper covers 6,008 rulings from 2014 to 2026 on the Poder Judicial portal (counter read on 2026-10-06). The 2026-10-04 scan found 4,503 annulment cases, 685 obligations, 564 enforcement of guarantees, 218 enforcement of awards and 10 foreign award recognitions (exequatur).

#### What does the outcome field mean in the Peru Arbitration Rulings Scraper?

The `outcome` field is derived from the official resolution type: "Sentencia infundada" is `claim-dismissed`, "Sentencia fundada" is `claim-granted`, "fundada en parte" is `partially-granted`, "improcedente" is `claim-inadmissible`, and appeal orders map to `confirmed-on-appeal` or `reversed-on-appeal`. A bare "Sentencia" (1,571 rulings) is `other`, because the Poder Judicial portal does not state the result.

#### How does the scraper find annulment grounds in Peruvian rulings?

The Peru Arbitration Rulings Scraper reads explicit mentions such as "causal b)", "CAUSALES B Y C" or "literales b) y c)" in each ruling's summary and keywords, and maps them to letters a to g of Article 63.1 of the Arbitration Law. 2,987 of the 4,503 annulment rulings name at least one ground. If none is stated, the column is omitted.

#### Why does the Peru arbitration rulings scraper search with and without accents?

The Poder Judicial portal is accent-sensitive and often indexes words only without accents: "corrupción" finds nothing while "corrupcion" finds thousands. The Peru Arbitration Rulings Scraper therefore runs both spellings by default through `includeAccentVariants`, merges the results and de-duplicates them by resolution id, so a Spanish keyword search does not silently miss rulings.

#### How do the date filters work in the Peru Arbitration Rulings Scraper?

The Poder Judicial portal has no date filter of its own. With the default newest-first date sort, the Peru Arbitration Rulings Scraper uses `dateFrom` and `dateTo` and locates the right result pages with a binary search, then reads only those pages.

#### Why does the scraper use a Peruvian residential proxy?

The Poder Judicial portal answers HTTP 403 to datacenter IP addresses, so the Peru Arbitration Rulings Scraper defaults to Apify Residential proxies located in Peru, so you do not need to configure anything or supply your own proxy settings, and datacenter proxies are not needed.

#### Why did my Peru Arbitration Rulings Scraper run return 0 results?

The search matched nothing on the Poder Judicial portal. The run ends as succeeded with the message "no items matched the input" and charges nothing. Try fewer filters, keep accent variants on, or use a single Spanish keyword, because all words of one term must appear in the same ruling.

#### What happens if the Poder Judicial portal is down or blocks the run?

If the Peru Arbitration Rulings Scraper could not read any ruling because the Poder Judicial portal is down or blocks the request, the run fails with a clear error message instead of ending as a silent empty success. Nothing is charged for a failed run or for error rows, so you can simply retry later.

#### Does the Peru Arbitration Rulings Scraper return the full text of rulings?

Yes. Switch on "Add full text of each ruling" and the Peru Arbitration Rulings Scraper extracts the text of each signed PDF, with page count, caption lines and parties. Scanned PDFs without a text layer return a notice and the $0.03 `ruling-fulltext` event is not charged.

#### How do I get only new Peru arbitration rulings since my last run?

Set `onlyNew` to `true` and schedule the Peru Arbitration Rulings Scraper. Each run returns only rulings that the same search has not returned before, and skipped rulings are free. Use `stateKey` for separate monitors and `resetSeen` to start over from zero.

### 🔗 Want more legal and public-records data?

- [Peru Jurisprudencia Scraper](https://apify.com/recordsdata/peru-jurisprudencia-scraper) for the Supreme and Superior Court rulings of Peru.
- [DataJud Scraper](https://apify.com/recordsdata/datajud-scraper) for Brazilian court cases across 91 courts.
- [SECOP Colombia Procurement Scraper](https://apify.com/recordsdata/secop-colombia-procurement-scraper) for Colombian public procurement.

### 🆘 Support

Write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11

# Actor input Schema

## `searchTexts` (type: `array`):

Spanish words or phrases searched inside the full text of the rulings (for example anulación de laudo, debido proceso). Each term runs as its own search and results are merged and de-duplicated. All words of one term must appear. Leave empty to list every ruling.

## `topics` (type: `array`):

Ready-made arbitration topics (due process, motivation, jurisdiction, public procurement, construction, interim measures, foreign awards...). Each topic expands to several Spanish legal terms, with and without accents, and merges the results.

## `includeAccentVariants` (type: `boolean`):

The portal is accent-sensitive and indexes many words only without accents ("corrupción" finds nothing, "corrupcion" finds thousands). Keep this on to search both spellings.

## `caseNumbers` (type: `array`):

Case number or its first digits, for example 00164-2026 or 000293-2023. Prefix match.

## `years` (type: `array`):

Year of the ruling. Leave empty for all years. One search runs per year.

## `subjects` (type: `array`):

Keep rulings whose subject contains one of these texts. Values seen on the portal: ANULACION DE LAUDOS ARBITRALES, EJECUCION DE LAUDOS ARBITRALES, EJECUCION DE GARANTIAS, RECONOCIMIENTO DE LAUDO ARBITRAL EXTRANJERO-EXEQUATUR, PRUEBA ANTICIPADA, CONVOCATORIA JUDICIAL, Ejecución de Acta de Conciliación, Obligaciones.

## `outcomes` (type: `array`):

Plain-language outcome derived from the official resolution type. Claim granted/dismissed refers to the annulment or enforcement claim; confirmed/reversed refers to appeal orders.

## `annulmentGrounds` (type: `array`):

Keep rulings whose official summary or keywords name one of these grounds of Article 63.1 of the Arbitration Law (DL 1071): a) invalid agreement, b) defense and due process, c) procedure, d) beyond the submission, e) non-arbitrable, f) time limit, g) other. Only explicit mentions count.

## `chambers` (type: `array`):

Chamber (sala) name contains, for example "1° SALA COMERCIAL" or "2° SALA COMERCIAL".

## `resolutionTypes` (type: `array`):

Exact official type, for example "Sentencia infundada" or "Auto de vista que confirma (A ejecución)".

## `keywords` (type: `array`):

Keep rulings tagged with one of these official keywords, for example "Causal b)". Case and accent insensitive.

## `summaryContains` (type: `string`):

Keep rulings whose official summary contains this text.

## `dateFrom` (type: `string`):

Earliest ruling date (YYYY-MM-DD). The Actor locates the date window with a page search when sorted by date.

## `dateTo` (type: `string`):

Latest ruling date (YYYY-MM-DD).

## `sortBy` (type: `string`):

Column used to order the portal results.

## `sortDirection` (type: `string`):

Newest first is the default.

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

Maximum number of rulings (or statistic rows) to return. Free users: limited to 10 items (preview). Paid users: optional, up to 1,000,000.

## `includePdfText` (type: `boolean`):

Downloads the signed PDF of every ruling and adds its full text, page count and labeled caption lines. Billed as an extra event per ruling with a text layer.

## `savePdfFiles` (type: `boolean`):

Stores each PDF in the run key-value store and adds a download link. Billed as an extra event per saved file.

## `maxTextChars` (type: `integer`):

Longer texts are cut with an ellipsis. The row also reports the real length in textChars.

## `onlyNew` (type: `boolean`):

Only new results: skip every ruling this same search already returned in an earlier run, so scheduled runs return just the new rulings, and you are not charged for skipped ones. Max Items then means N new rulings. Applies to ruling rows only; statistics mode always recomputes.

## `stateKey` (type: `string`):

Optional label to keep several independent monitors for the same search. Runs that share the same search filters and the same name share one list of seen rulings. Leave empty to use the default monitor.

## `resetSeen` (type: `boolean`):

Clear the stored list of already-seen rulings for this search and monitor name before the run, so every matching ruling counts as new again.

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

Rulings returns one row per ruling. Statistics scans the matching rulings and returns counts grouped by year, subject, chamber, outcome or ground (for example annulment success rate per year).

## `statisticsBy` (type: `array`):

Dimensions combined in the statistics rows. The Actor reads every matching ruling, so a full-corpus run takes a while (about 3 rulings per second).

## `concurrency` (type: `integer`):

Portal sessions reading result pages at the same time (1 to 6). Each session reads about one page of 10 rulings every 4 seconds.

## `proxyConfiguration` (type: `object`):

Required. The portal answers HTTP 403 to datacenter IPs and works with Peruvian residential IPs, so the default is Apify Residential proxy in Peru.

## Actor input object example

```json
{
  "searchTexts": [
    "anulación de laudo"
  ],
  "includeAccentVariants": true,
  "subjects": [
    "ANULACION DE LAUDOS ARBITRALES"
  ],
  "sortBy": "date",
  "sortDirection": "DESC",
  "maxItems": 10,
  "includePdfText": false,
  "savePdfFiles": false,
  "maxTextChars": 300000,
  "onlyNew": false,
  "stateKey": "",
  "resetSeen": false,
  "mode": "rulings",
  "statisticsBy": [
    "year",
    "outcome"
  ],
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PE"
  }
}
```

# Actor output Schema

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

Key fields of every ruling

## `fullData` (type: `string`):

Complete dataset with every field

## `pdfFiles` (type: `string`):

Original ruling PDFs stored in the key-value store (when enabled)

# 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 = {
    "searchTexts": [
        "anulación de laudo"
    ],
    "subjects": [
        "ANULACION DE LAUDOS ARBITRALES"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "PE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/peru-laudos-arbitrales-scraper").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 = {
    "searchTexts": ["anulación de laudo"],
    "subjects": ["ANULACION DE LAUDOS ARBITRALES"],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "PE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/peru-laudos-arbitrales-scraper").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 '{
  "searchTexts": [
    "anulación de laudo"
  ],
  "subjects": [
    "ANULACION DE LAUDOS ARBITRALES"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PE"
  }
}' |
apify call recordsdata/peru-laudos-arbitrales-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/peru-laudos-arbitrales-scraper"
        }
    }
}
```

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/O245RBLbdLjtQe8Hw/builds/cdN2oooSIfjgjvPcC/openapi.json
