# Trade-A-Plane Scraper - Aircraft Listings, N-Numbers & Sellers (`scrapersdelight/trade-a-plane-scraper`) Actor

Scrape Trade-A-Plane aircraft, engine and parts listings: price, year, make, model, N-number, total time, seller and phone, location, photos. Optional details: serial, engine and prop times, avionics, documents, dealer address. FAA registry check, filters, monitor mode. No login.

- **URL**: https://apify.com/scrapersdelight/trade-a-plane-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Lead generation, E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.50 / 1,000 listings

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?

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

### What does Trade-A-Plane Scraper do?

**Trade-A-Plane Scraper** extracts Trade-A-Plane listings from [trade-a-plane.com](https://www.trade-a-plane.com) - aircraft, engines, parts and avionics - and turns a category, a filter set or any Trade-A-Plane URL into structured rows: one listing with its price, year, make, model, N-number, total time, seller, phone and location. Built for aircraft brokers, dealers, financiers, insurers and market analysts who need aircraft-for-sale data without copying listings by hand.

Trade-A-Plane scraper · aircraft for sale scraper · Trade-A-Plane API · aviation listings data

- **Every listing on a search page:** 96 listings per request, every Trade-A-Plane filter (category, make, model group, price, year, total time, condition, ZIP radius, seller, keyword, sort) sent to the site itself.
- **Full listing details on request:** serial number, engine and prop times (SMOH/SNEW/SFRM as published), avionics and equipment, airframe, interior/exterior, remarks, every photo, logbook documents, videos, contact name, all phone numbers, dealer address.
- **FAA registry check:** each US N-number looked up on the FAA's registry - status, FAA serial, make/model and year, expiry - with a flag for whether the FAA serial matches the listing.
- **Past the 3,000-result window:** a search Trade-A-Plane shows as "3,000+" is read as price bands, so a whole category comes back (all 2,667 single-engine pistons on 2026-10-14).
- **Engines, parts and avionics too:** the same row shape, with condition, part number and sub-category.
- **Monitor mode:** only new or re-priced listings on each scheduled run, with the previous price.
- **No login, cookies or API key.** Export to JSON, CSV or Excel, or use the API, schedules, webhooks, Make, Zapier, n8n and MCP.

### What data can you get from Trade-A-Plane?

<table>
<tr>
<td>🔗 Listing id + URL (`listingId`, `url`)</td>
<td>✈️ Year, make, model, model group</td>
<td>🏷️ Category / sub-category</td>
</tr>
<tr>
<td>💲 Price, currency, "Call for Price"</td>
<td>🏦 Financing estimate (`financingPerMonth`)</td>
<td>🔢 Registration / N-number</td>
</tr>
<tr>
<td>⏱️ Total time (`totalTime`)</td>
<td>🛠️ Engine and prop times (details)</td>
<td>🔖 Serial number (details)</td>
</tr>
<tr>
<td>🏢 Seller / dealer name, seller id</td>
<td>☎️ Phone numbers (`phone`, `phones`)</td>
<td>👤 Contact name (details)</td>
</tr>
<tr>
<td>📍 City, state, country</td>
<td>🏠 Dealer street address + ZIP (details)</td>
<td>🧾 Seller type: dealer or private (details)</td>
</tr>
<tr>
<td>📡 Avionics / equipment (details)</td>
<td>📝 Description, airframe, remarks</td>
<td>🖼️ Photos, documents, videos</td>
</tr>
<tr>
<td>🇺🇸 FAA status + serial match (`faaSerialMatch`)</td>
<td>🔁 Monitor change + previous price</td>
<td>📋 Every published spec (`specs`)</td>
</tr>
</table>

On the 2,667 single-engine pistons read on 2026-10-14: 95% of rows had a registration, 94% a total time, 96% a seller name, 71% a phone number and 88% a price (the rest are "Call for Price").

### How to scrape Trade-A-Plane with Trade-A-Plane Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) - it comes with monthly credit, no card needed.
2. Open [Trade-A-Plane Scraper](https://apify.com/scrapersdelight/trade-a-plane-scraper) and click **Try for free**.
3. Pick one or more **Categories** (or paste Trade-A-Plane URLs), add filters, and set **Max results**.
4. Turn on **Include listing details** or **Check the FAA registry** if you need them.
5. Click **Start**. Listings stream into the dataset as each page is read.
6. Open the **Storage** tab and **Export** as JSON, CSV or Excel - or schedule the run.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| `categories` | array | Trade-A-Plane categories: 9 aircraft classes, Piston/Turbine Engine, 15 parts categories incl. Avionics. Default: none |
| `listingType` | string | `aircraft` (default), `engine` or `part`, used when no category is picked |
| `keywords` | array | The site's keyword search, one search each (e.g. `citation`, `G1000`) |
| `startUrls` | array | Search URLs (filters kept), keyword-search URLs, seller inventories, listing URLs or bare listing ids |
| `sellerIds` | array | A dealer's whole inventory, one search each |
| `makes`, `modelGroups`, `models` | array | Site-side make / model group / exact model filters (several = any of them) |
| `minPrice`, `maxPrice` | integer | Asking price range in USD (a minimum also drops "Call for Price") |
| `minYear`, `maxYear` | integer | Year built |
| `minTotalTime`, `maxTotalTime` | integer | Airframe total time in hours |
| `conditions` | array | New, Used, Project, Not Specified; engines Overhauled, Repaired |
| `zipCode`, `distanceMiles` | string, integer | Around a ZIP / postal code: 25-500 miles (default 100) |
| `withPhotosOnly` | boolean | Only listings with photos. Default false |
| `sort` | string | Site default, last updated, price, year, total time, engine time, make, model |
| `modelContains` | array | Keep only listings whose model or title contains a word (`172`, `Bonanza`) |
| `withPhoneOnly`, `pricedOnly` | boolean | Only listings with a phone / with a price |
| `includeDetails` | boolean | Read each listing page (listing-details add-on). Default false |
| `checkFaaRegistry` | boolean | FAA registry check for US N-numbers, no extra charge. Default false |
| `monitorMode`, `monitorStoreName` | boolean, string | Deliver only new or re-priced listings since the last run |
| `maxResults` | integer | Listings to deliver, 0 = no limit. Default 50 |
| `maxResultsPerSearch` | integer | Cap per search when several run. Default 0 |
| `splitLargeSearches` | boolean | Read "3,000+" searches as price bands. Default true |
| `compact` | boolean | Core fields only, for AI/MCP pipelines |
| `proxyConfiguration` | object | Optional; the run picks its own route |

#### Input JSON

```json
{
    "categories": ["Single Engine Piston", "Multi Engine Piston"],
    "makes": ["CESSNA", "PIPER", "BEECHCRAFT"],
    "maxPrice": 300000,
    "sort": "updated_newest",
    "maxResults": 100,
    "includeDetails": true,
    "checkFaaRegistry": true
}
```

#### Use Trade-A-Plane's own names for makes and models

Makes and model groups are matched the way Trade-A-Plane spells them (`BEECHCRAFT`, `CESSNA 172 SERIES`); upper or lower case both work. If you only know part of a model name, put it in **Model contains** (`172`, `Bonanza`, `Citation`), which checks each listing's model and title.

#### Paste any Trade-A-Plane page

Build a search on trade-a-plane.com, copy the address bar and paste it into **Trade-A-Plane URLs**: every filter in it is kept. A listing link or a bare listing number (`2459196`) returns that one listing.

#### Large categories

Trade-A-Plane shows at most 3,000 results per search. When you ask for more than 1,000 rows from a search that shows "3,000+", the actor reads it in price bands plus the "Call for Price" band and deduplicates by listing id: all 2,667 single-engine pistons came back from 41 pages in one run.

### ⬆️ Output

```json
{
  "listingId": "2439655",
  "url": "https://www.trade-a-plane.com/search?listing_id=2439655&s-type=aircraft",
  "category": "Single Engine Piston",
  "title": "1965 BEECHCRAFT 33 DEBONAIR",
  "price": 109950,
  "financingPerMonth": 504.93,
  "registration": "N5861S",
  "totalTime": 11149,
  "sellerName": "Select Aviation Services LLC",
  "sellerType": "dealer",
  "phone": "(601) 941-5800",
  "location": "Vero Beach, FL, USA",
  "serial": "CD-824",
  "contactName": "Brewer Pearson",
  "engineTime": "1902 SMOH",
  "propTime": "1868 SNEW",
  "seats": 4,
  "photoCount": 22,
  "faaStatus": "Valid",
  "faaSerialNumber": "CD-824",
  "faaSerialMatch": true,
  "faaYearMatch": true
}
```

#### Fields and how often they are filled

Measured on local runs, 2026-10-14. Search rows: 2,667 single-engine pistons (price-band split) and 1,000 newest-updated aircraft of all classes. Details: 21 listing pages.

| Field | What it is | Filled |
|---|---|---|
| `listingId`, `url`, `title`, `make`, `model`, `category`, `modelGroup` | Identity | 100% |
| `year` | Year built | 97-98% |
| `price`, `financingPerMonth` | Asking price, monthly estimate | 88-90% (the rest "Call for Price") |
| `registration` | N-number or foreign mark as listed | 94-95% |
| `totalTime` | Airframe total time | 94% |
| `sellerName` | Seller or dealer | 95-96% |
| `phone`, `phones` | Seller phone numbers | 62-71% (some sellers show none) |
| `city`, `state`, `country` | Where the aircraft is | 93-99% |
| `sellerType` | dealer / private | 100% with details (cards only mark linked dealers) |
| `serial` | Serial number (details) | 86% |
| `engineTime`, `propTime` | Engine 1 / prop 1 time (details) | 90% / 62% |
| `avionics`, `enginesModsProp`, `airframe` | Spec sections (details) | 81% / 81% / 76% |
| `contactName` | Contact person (details) | 95% |
| `sellerStreet` … `sellerPostalCode` | Dealer address (details) | 10% (dealers who publish one) |
| `documents`, `videos` | Logbook PDFs, video links (details) | 14% / 10% |
| `faaStatus`, `faaSerialMatch` | FAA check (US N-numbers) | 14 of 18 checked rows had a US N-number; all 14 found (12 Valid, 1 In Question, 1 Cert Terminated); serial matched on 12 of 12 with a serial |

Engine rows add `condition`; parts rows add `partNumber`, `subcategory` and `makeModelText`. Seller emails are not published on Trade-A-Plane (sellers are reached through its contact form), so there is no email field. "Stock #" on parts cards read "Not Listed" on every captured page and is not shipped; an "Annual due" date appears in `specs` when a seller publishes one.

### How can I use Trade-A-Plane data?

- ✈️ **Aircraft brokers and dealers:** track competing inventory and asking prices by make, model group and total time.
- 📈 **Market analysts:** price-per-hour and price-by-year curves for any model, across the whole category.
- 🏦 **Lenders and insurers:** pull serial, engine times and avionics for valuation and underwriting.
- 🔍 **Due diligence:** the FAA check flags listings whose N-number belongs to a different serial, or whose registration is not valid.
- 🔔 **Buyers:** a daily monitor run on a model group delivers only new and re-priced listings.
- 🧰 **Parts and engine shops:** overhauled engines and avionics with prices and sellers.

### How much does it cost to scrape Trade-A-Plane?

Trade-A-Plane Scraper is priced per listing: **$0.0045 per listing**, plus **$0.009** for each listing delivered with its listing-page details. No start fee; the FAA check costs nothing extra.

| Listings | Search rows | With details |
|---|---|---|
| 10 | $0.045 | $0.135 |
| 100 | $0.45 | $1.35 |
| 1,000 | $4.50 | $13.50 |

Duplicates, filtered listings, unchanged monitor listings and listings that no longer exist are not charged, and a run that finds nothing costs nothing.

### Integrations, API, scheduling and MCP

Run it on a [schedule](https://docs.apify.com/platform/schedules) with monitor mode for a daily new-listings feed, send results to Google Sheets, Slack, Make, Zapier or n8n through [integrations](https://apify.com/integrations), or start runs and read datasets from your own code with the [Apify API](https://apify.com/scrapersdelight/trade-a-plane-scraper/api/python) ([JavaScript](https://apify.com/scrapersdelight/trade-a-plane-scraper/api/javascript)). AI agents can call it through the [Apify MCP server](https://apify.com/scrapersdelight/trade-a-plane-scraper/api/mcp).

### More auction and equipment scrapers

- [GovDeals Scraper](https://apify.com/scrapersdelight/govdeals-auction-scraper) - government surplus lots, including aircraft and vehicles.
- [GSA Auctions Scraper](https://apify.com/scrapersdelight/gsa-auctions-scraper) - federal surplus lots with bids and alerts.
- [IronPlanet Scraper](https://apify.com/scrapersdelight/ironplanet-lot-scraper) - heavy equipment lots with serials.
- [BigIron Auction Scraper](https://apify.com/scrapersdelight/bigiron-lot-scraper) - live lots and sold-price comps.
- [HiBid Auction Scraper](https://apify.com/scrapersdelight/hibid-scraper) - lots, bids and prices across US and Canadian auctions.

See every actor on our [profile](https://apify.com/scrapersdelight).

### Limits and empty runs

- **3,000 results per search** is Trade-A-Plane's own window; larger searches are split by price (above).
- **Listing pages are paced.** Trade-A-Plane slows down clients that ask too fast, so details are read about one listing every 4.5 seconds: 100 detailed listings take about 7-8 minutes; search pages deliver 96 listings each (1,000 rows in under a minute locally).
- **Empty runs:** a search with no matches, filters that drop every row, or a monitor run with nothing new delivers nothing and costs nothing. `RUN_SUMMARY` in the key-value store says which, per search.
- **FAA check** covers US N-numbers only; foreign marks (C-, D-…) and placeholders are left blank.

### ❓ FAQ

#### How much does Trade-A-Plane Scraper cost?

$0.0045 per listing and $0.009 more per listing with details, no start fee: 100 listings cost $0.45, or $1.35 with details.

#### How many listings can Trade-A-Plane Scraper get?

As many as Trade-A-Plane lists for your search. Each search shows up to 3,000; with price-band splitting a whole category comes back (2,667 single-engine pistons, 1,000 aircraft in 47 seconds on a local test).

#### Does Trade-A-Plane Scraper get seller phone numbers?

Yes, the full numbers behind Trade-A-Plane's "click to call" buttons: 62-71% of listings show one on the results page, and details add every number a dealer lists (office, cell). Seller emails are not published on Trade-A-Plane.

#### Can Trade-A-Plane Scraper monitor new aircraft listings on a schedule?

Yes. Turn on monitor mode and schedule the actor: each run delivers only listings it has not delivered before (`changeType: NEW`) and listings whose price changed (`PRICE_CHANGED`, with `previousPrice`).

#### What does the FAA check in Trade-A-Plane Scraper do?

For every US N-number it reads the FAA registry's live page and adds the registration state and status, the FAA's serial, make, model and year, the expiry date and whether the serial and year match the listing. It does not copy owner names or addresses.

#### Can I scrape engines, parts and avionics with Trade-A-Plane Scraper?

Yes. Pick Piston Engine, Turbine Engine, Avionics or another parts category, or set the listing type to engines or parts.

#### Does Trade-A-Plane Scraper need a login, cookies or an API key?

No. It reads the same public pages any visitor sees.

#### Can I use Trade-A-Plane Scraper with the Apify API or Python?

Yes - start a run and read the dataset with the Apify API or the `apify-client` package for Python and JavaScript.

#### Can AI agents use Trade-A-Plane Scraper through MCP?

Yes, through the Apify MCP server; turn on **Compact output** for core fields only.

#### Why did Trade-A-Plane Scraper return no results?

Usually a make or model written differently from Trade-A-Plane's own name, or filters that exclude everything. Try the search on trade-a-plane.com, then paste its URL. `RUN_SUMMARY` lists each search's total and status.

#### Is it legal to scrape Trade-A-Plane?

Trade-A-Plane Scraper collects only publicly available listing information. You are responsible for how you use the data, including seller contact details.

#### Your feedback

Found a bug or need a field? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/trade-a-plane-scraper/issues/open) and we will look at it.

# Actor input Schema

## `categories` (type: `array`):

Trade-A-Plane categories to search, e.g. Single Engine Piston, Jets, Piston Helicopters, Piston Engine, Avionics. Several categories of one kind run as one search. Leave empty for every listing of the kind chosen below.

## `listingType` (type: `string`):

What to list when no category is picked: aircraft, engines or parts/avionics. Categories above set the type themselves.

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

The site's keyword search, one search each, e.g. "citation", "G1000", "bonanza". Combined with the categories and filters.

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

Search pages (filters in the URL are kept, e.g. https://www.trade-a-plane.com/search?category_level1=Jets\&make=CESSNA\&s-type=aircraft), keyword searches, a seller's inventory (?seller_id=), listing pages (?listing_id=) or bare listing ids ("2459196").

## `sellerIds` (type: `array`):

A dealer's whole inventory: the seller_id from a Trade-A-Plane seller link, e.g. "105071". One search each, combined with the filters.

## `makes` (type: `array`):

Manufacturers as Trade-A-Plane names them, e.g. "CESSNA", "PIPER", "BEECHCRAFT", "CONTINENTAL". Several = any of them.

## `modelGroups` (type: `array`):

Trade-A-Plane model groups, e.g. "CESSNA 172 SERIES", "BEECHCRAFT 36 BONANZA SERIES", "PIPER ARCHER SERIES".

## `models` (type: `array`):

Exact Trade-A-Plane model names, e.g. "182T SKYLANE", "CITATION BRAVO". For a looser match ("172", "Bonanza") use Model contains below.

## `minPrice` (type: `integer`):

Lowest asking price. Setting it also drops "Call for Price" listings.

## `maxPrice` (type: `integer`):

Highest asking price, e.g. 250000.

## `minYear` (type: `integer`):

Oldest year built, e.g. 2000.

## `maxYear` (type: `integer`):

Newest year built.

## `minTotalTime` (type: `integer`):

Lowest airframe total time in hours.

## `maxTotalTime` (type: `integer`):

Highest airframe total time in hours, e.g. 2000.

## `conditions` (type: `array`):

Listing condition as the seller set it. Aircraft use New / Used / Project; engines also Overhauled / Repaired.

## `zipCode` (type: `string`):

Search around a US ZIP or Canadian postal code, e.g. "75201". Uses the distance below.

## `distanceMiles` (type: `integer`):

Radius around the ZIP code: the site offers 25, 50, 75, 100, 150, 250 or 500 miles (other numbers round up to the next one). Ignored without a ZIP code.

## `withPhotosOnly` (type: `boolean`):

Only listings that have photos.

## `sort` (type: `string`):

Trade-A-Plane's own sort orders. "Last updated" pairs well with monitor mode.

## `modelContains` (type: `array`):

Keep only listings whose model, title or model group contains one of these words, e.g. "172", "Bonanza", "G1000".

## `withPhoneOnly` (type: `boolean`):

Only listings that show a seller phone number (with details on, the listing page is checked too).

## `pricedOnly` (type: `boolean`):

Skip "Call for Price" listings.

## `includeDetails` (type: `boolean`):

Read each listing's page for serial number, engine and prop times, avionics/equipment, airframe, interior/exterior, remarks, every photo, documents, contact name, all phones and the dealer's address. Charged as the listing-details add-on per detailed row.

## `checkFaaRegistry` (type: `boolean`):

Look up each US N-number on the FAA's registry: registration state, status, FAA serial, make/model, year and expiry, plus whether the serial and year match the listing (serial match needs details on). No extra charge.

## `monitorMode` (type: `boolean`):

Deliver only listings not delivered by an earlier run, or whose price changed (changeType NEW / PRICE_CHANGED, with previousPrice). Pairs with a daily schedule.

## `monitorStoreName` (type: `string`):

Name of the key-value store that remembers delivered listings. Use one name per watch list, e.g. "tap-jets-texas". Default: trade-a-plane-monitor.

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

Most listings to deliver in this run (0 = no limit). Trade-A-Plane shows at most 3,000 per search; larger searches are split by price (below).

## `maxResultsPerSearch` (type: `integer`):

Cap per search when several run (0 = only the total cap applies).

## `splitLargeSearches` (type: `boolean`):

A search showing "3,000+" results is read as price bands (plus Call for Price) so more than 3,000 listings can be delivered, deduplicated by listing id. Used when more than 1,000 rows are wanted.

## `compact` (type: `boolean`):

Core fields only (id, URL, title, year, make, model, price, registration, total time, seller, phone, location) - trimmed for AI/MCP pipelines. Detail and FAA fields stay when those options are on.

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

Optional. The run reaches Trade-A-Plane without a proxy and switches by itself if it is refused. Add your own proxy URLs to use them first.

## Actor input object example

```json
{
  "categories": [
    "Single Engine Piston"
  ],
  "listingType": "aircraft",
  "distanceMiles": 100,
  "withPhotosOnly": false,
  "sort": "relevance",
  "withPhoneOnly": false,
  "pricedOnly": false,
  "includeDetails": false,
  "checkFaaRegistry": false,
  "monitorMode": false,
  "maxResults": 24,
  "maxResultsPerSearch": 0,
  "splitLargeSearches": true,
  "compact": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One item per Trade-A-Plane listing.

## `summary` (type: `string`):

Per-search totals and status, filtered, duplicate and unchanged counts, listing pages read, FAA checks, routes used.

# 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 = {
    "categories": [
        "Single Engine Piston"
    ],
    "maxResults": 24,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/trade-a-plane-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 = {
    "categories": ["Single Engine Piston"],
    "maxResults": 24,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/trade-a-plane-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 '{
  "categories": [
    "Single Engine Piston"
  ],
  "maxResults": 24,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapersdelight/trade-a-plane-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/trade-a-plane-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/hmg3T7IEgbGrY38L0/builds/8xQtEsnliXC6LBr0x/openapi.json
