# Barnstormers Scraper \[$5/1K💰] | Aircraft for Sale (`ahmed_jasarevic/barnstormers-scraper`) Actor

Scrape Barnstormers aircraft classifieds for Cessna, Piper, jets, helicopters, experimental and parts. Get price, TT, SMOH, avionics, N-number and seller location. $5 per 1,000 ads.

- **URL**: https://apify.com/ahmed_jasarevic/barnstormers-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

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

## Barnstormers Scraper – Aircraft Classifieds & For-Sale Listings

Scrape **Barnstormers.com** aircraft classifieds for Cessna, Piper, jets, helicopters, experimental aircraft, warbirds and parts. Get asking price, total time, engine hours, avionics, N-number, damage history, seller location and photos. **$5 per 1,000 ads.**

### Find Aircraft Deals Across Every Category

Barnstormers is one of the largest free aircraft marketplaces. This Actor turns public classifieds into structured listings for brokers, dealers, buyers and market researchers.

- **Aircraft sourcing** — find Cessna, Piper, Cirrus, Mooney and experimental listings.
- **Price research** — compare asking prices, total time and engine hours.
- **Dealer inventory** — monitor new listings by make, model or region.
- **Parts and project sourcing** — track airframes, engines, avionics and parts.

### How It Works

![How the Barnstormers Scraper works: from an aircraft category to structured for-sale listing records.](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-barnstormers-scraper.webp)

The Actor reads public Barnstormers category and ad pages, extracts the listing details and normalizes them into one row per aircraft. Choose categories or start URLs, add a keyword, and cap the run.

- 25 ads per category page.
- Up to 5,000 ads per run.
- Optional detail enrichment for the canonical ad title.

### Scrape Cessna, Piper, Jets, Helicopters And Experimental Aircraft

Leave `categories` empty to walk top-level categories, or target the makes and classes you need:

- Cessna, Piper, Beechcraft and Cirrus
- Jets and turboprops
- Helicopters
- Experimental and light sport
- Warbirds and antique aircraft
- Engines, avionics and parts

Categories accept names, slugs, numeric IDs or URLs. `startUrls` can point directly at a category page or a single classified ad.

### Price, Total Time, Avionics And Damage History

Each listing includes the asking price, seller status line and full ad text. The Actor also extracts common aircraft details when the seller publishes them:

- Make, model and year
- Total time, engine hours and airframe hours
- Avionics brands and models
- N-number and damage history
- Seller name, company and seller type
- City, state, postal code and country
- Full-size and thumbnail photos
- Optional spec-sheet PDF

Seller phone and email are returned only when the advertiser typed them into the ad text. Barnstormers hides contact details from logged-out visitors and routes inquiries through its contact form.

### Input – Configure A Barnstormers Run

| Field | Type | Default | Notes |
|---|---|---|---|
| `startUrls` | array | — | Optional category or individual ad URLs |
| `categories` | array | — | Category names, slugs, IDs or URLs; empty walks top-level categories |
| `keyword` | string | `""` | Matches title, make, model, description and N-number |
| `maxItems` | integer | `100` | Maximum ads saved; hard cap: 5,000 |
| `maxPagesPerCategory` | integer | `3` | Result pages per category; 25 ads per page |
| `maxConcurrency` | integer | `10` | Advanced performance setting, 1–50 |
| `includeDetails` | boolean | `false` | Adds the canonical title from the individual ad page |
| `includeImages` | boolean | `true` | Include full-size, thumbnail and primary image URLs |
| `proxy` | object | Apify Proxy off | Standard Apify proxy configuration |

### Output – Aircraft Listing Fields

Each dataset item contains:

- `adId`, `title`, `url`, `contactUrl`
- `make`, `model`, `year`
- `price`, `priceText`, `currency`, `actionPhrase`
- `description`
- `totalTimeHours`, `engineHours`, `airframeHours`
- `avionics`, `avionicsText`
- `nNumber`
- `damageHistory`, `hasDamageHistory`
- `sellerName`, `sellerCompany`, `sellerType`
- `phone`, `email`
- `city`, `state`, `postalCode`, `country`
- `postedDate`
- `images`, `thumbnailImages`, `primaryImage`
- `specPdfUrl`
- `category`, `categoryId`
- `scrapedAt`

### Example Input – Cessna Listings With Garmin Avionics

```json
{
  "categories": ["Cessna", "Piper"],
  "keyword": "Garmin",
  "maxItems": 100,
  "maxPagesPerCategory": 3,
  "includeImages": true
}
```

### Example Output – One Cessna 172

```json
{
  "adId": "2080815",
  "title": "1983 CESSNA 172P SKYHAWK",
  "url": "https://www.barnstormers.com/classified-2080815-1983-Cessna-172P.html",
  "make": "Cessna",
  "model": "172P",
  "year": 1983,
  "price": 89500,
  "priceText": "$89,500",
  "currency": "USD",
  "actionPhrase": "FOR SALE",
  "totalTimeHours": 6120,
  "engineHours": 820,
  "avionics": ["Garmin GNS 430W", "ADS-B"],
  "nNumber": "N12345",
  "damageHistory": "No damage history",
  "hasDamageHistory": false,
  "sellerName": "John Smith",
  "sellerType": "Owner",
  "city": "Wichita",
  "state": "KS",
  "postedDate": "2026-10-28",
  "primaryImage": "https://www.barnstormers.com/listing_images/large/example.jpeg",
  "scrapedAt": "2026-10-30T10:00:00.000Z"
}
```

### Export Aircraft Data To JSON, CSV Or Excel And Schedule Runs

Download results as JSON, CSV, Excel or XML from the run page or through the Apify API. Schedule daily runs to catch new listings, or trigger a run when a make, model or keyword appears.

### Related Actors

- [Google Search Scraper](https://apify.com/ahmed_jasarevic/google-search-scraper) — research aircraft models and market prices
- [eBay Scraper](https://apify.com/ahmed_jasarevic/ebay-scraper) — compare parts and aircraft listings
- [Google Maps Scraper](https://apify.com/apify/google-maps-scraper) — verify airports, dealers and seller locations
- [AutoTrader Scraper](https://apify.com/ahmed_jasarevic/autotrader-scraper) — broader vehicle-market benchmarking

### FAQ

#### What is Barnstormers?

Barnstormers.com is a large free aircraft classifieds marketplace for airplanes, helicopters, experimental aircraft, warbirds, parts and avionics.

#### Do I need an account?

No. The Actor reads public classifieds and does not require a Barnstormers account or login.

#### Why are seller phone and email missing?

Barnstormers hides contact details from logged-out visitors. The Actor returns phone or email only when the seller typed them into the ad text.

#### Are total time and engine hours official?

No. They are parsed from the seller's ad text and may be `null` when not mentioned. Always verify logbooks and hours before a purchase.

#### Can I scrape a single ad?

Yes. Pass the ad URL in `startUrls` or target its category.

#### How many ads can I scrape?

Up to **5,000** per run with `maxItems`. Free Apify users get a 10-ad preview.

### For AI Agents & LLM Apps

Returns one row per Barnstormers aircraft ad with price, hours, avionics, seller location and photos.

Minimal working input:

```json
{ "categories": ["Cessna"], "keyword": "Skyhawk", "maxItems": 24 }
```

Output fields: `adId, title, url, make, model, year, price, priceText, currency, totalTimeHours, engineHours, airframeHours, avionics, nNumber, damageHistory, sellerName, sellerType, city, state, postedDate, primaryImage, scrapedAt`.

Behaviors an agent should know:

- `maxItems` is capped at **5,000**.
- Free users are capped at **10** saved ads.
- `categories` accepts names, slugs, IDs or URLs.
- `includeDetails: false` is faster and uses the listing-page title.
- Seller phone and email are often `null` because Barnstormers hides them.
- Hour figures, avionics and damage history are extracted from free text and may be missing.

Billing: **$0.005 per saved ad** on FREE/BRONZE ($5 per 1,000), $0.0045 on SILVER and $0.004 on GOLD+, plus a small actor-start event.

### Legal & Compliance Disclaimer

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Barnstormers.com.

It collects publicly available aircraft classifieds — no login and no private account. Listing data and seller claims are self-reported. Users are responsible for verifying aircraft condition, title, logbooks and airworthiness, and for complying with Barnstormers' terms and applicable law. Nothing here is legal, aviation-safety or financial advice.

### SEO Keywords

barnstormers scraper, aircraft for sale, airplane classifieds, cessna for sale, piper for sale, aircraft listings, used airplanes, helicopter for sale, experimental aircraft, aircraft marketplace, barnstormers aircraft, airplane prices, aircraft avionics, n number lookup, aircraft dealer inventory, plane classifieds, aircraft data, barnstormers api

# Actor input Schema

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

Optional category or individual ad URLs, e.g. https://www.barnstormers.com/category-17352-Cessna.html or https://www.barnstormers.com/classified-2080815-1983-CESSNA-172P-SKYHAWK.html. Leave empty to browse categories.

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

Category names, slugs, IDs or URLs to crawl, e.g. \["Cessna", "category-17352-Cessna.html", "17352"]. Leave empty to walk all top-level categories.

## `keyword` (type: `string`):

Optional case-insensitive filter applied to title, make, model, description and N-number (e.g. "Skyhawk", "N12345", "Garmin").

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

Maximum number of ads to push to the dataset.

## `maxPagesPerCategory` (type: `integer`):

How many result pages (25 ads each) to crawl per category.

## `maxConcurrency` (type: `integer`):

How many pages to fetch in parallel. Higher is faster; lower it if Barnstormers rate-limits you.

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

Slower: fetches each ad's own page (one extra request per ad) for the canonical title. Listing pages already contain every other field.

## `includeImages` (type: `boolean`):

Include full-size (large) and thumbnail photo URLs, plus the primary image.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "keyword": "",
  "maxItems": 100,
  "maxPagesPerCategory": 3,
  "maxConcurrency": 10,
  "includeDetails": false,
  "includeImages": true,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/barnstormers-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 = { "proxy": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/barnstormers-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 '{
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/barnstormers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/barnstormers-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/t18Jimf3qEABvRZka/builds/c9YEWzFFe37hgVYO5/openapi.json
