Controller.com Scraper — Aircraft Listings & Price Monitor
Pricing
from $2.29 / 1,000 scraped controller.com listings
Controller.com Scraper — Aircraft Listings & Price Monitor
Scrape Controller.com aircraft listings for brokers and buyers: asking prices, total time, registration, serials, dealer phones, and images. Monitor new inventory and price changes. Listings or details mode.
Pricing
from $2.29 / 1,000 scraped controller.com listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Crawloop Aviation & Sandhills Classifieds — Controller.com aircraft asking prices, total time, registration, dealer phones, and inventory change alerts. Pair with AeroExpo for OEM / MRO catalogs.
| Controller.com (aircraft) | MachineryTrader (US heavy) | TractorHouse (farm) | TruckPaper (trucks) | AeroExpo (aeronautical catalog) |
|---|---|---|---|---|
| Controller.com Scraper ◄── you are here | MachineryTrader Scraper | TractorHouse Scraper | TruckPaper Scraper | AeroExpo Scraper |
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Controller.com, Sandhills Global, or their brands. Data is read from publicly accessible pages only. You are responsible for complying with applicable law and site terms. No warranty on accuracy or availability.
What this Controller.com scraper does
This Controller.com scraper extracts aircraft for-sale, for-lease, and fractional-ownership listings into a clean Apify dataset: asking price, make, model, year, total time, registration, serial number, engine times, dealer phone, location, and images. Built as a Controller.com API alternative for aircraft brokers, buyers’ agents, lessors, appraisers, and aviation data teams who need jets, turboprops, piston aircraft, and helicopters in Python, Node.js, or MCP — export JSON / CSV / Excel without manual browsing.
Run listings for fast catalog pulls (retail cards already include dealer phone and aviation specs) or details for PDP canonical URL, breadcrumbs, and video. Enable monitorMode on an Apify Schedule to track new inventory and price changes per dealer, category, or search.
When to use
- Broker competitive intelligence — watch a rival
AccountCRMIDinventory daily - Asking-price comps for Citation, King Air, SR22, Robinson, and Gulfstream listings
- Acquisition shortlists by category, year, total time, seats, state, or registration
- Outreach lists with published dealer phones (no details mode required for most retail cards)
- Join used-aircraft asking prices with OEM catalogs from AeroExpo Scraper
When not to use
- You need authenticated sold / valuation figures from Controller Values (login-gated)
- You only need aeronautical product catalogs (avionics, GSE, UAV) — start with AeroExpo Scraper
- You need US construction or farm boards — use MachineryTrader Scraper or TractorHouse Scraper
Aviation + Sandhills workflow
Used aircraft asking prices Catalog / other Sandhills boards─────────────────────────── ────────────────────────────────Controller.com Scraper ◄── you are here│ dealer phones, total time, registration, monitor deltas▼AeroExpo Scraper ───────────────► OEM / MRO product catalogsMachineryTrader Scraper ────────► US heavy equipmentTractorHouse / TruckPaper ──────► farm and commercial trucks
Key features
- Search URL or filters — paste a search / dealer inventory / category URL, or build one from manufacturer, category, keywords, state, country, condition, seats, registration, and
AccountCRMID - Two modes —
listings(fast SSR cards with phone + specs) anddetails(canonical URL, video, breadcrumbs) - Monitor mode — seed fingerprints, then emit only
new/price_changerows; optional Telegram alerts - Aviation specs — total time, registration, serial, engine times, seats, flight rules, ADS-B / WAAS / SVT, extra specs preserved
- Dealer phones on cards — outreach fields without visiting every PDP
- Cloudflare-ready —
curl_cffiChrome TLS; Apify Residential (US) recommended - Priced-only filter — skip Call-for-price and zero-price rows
- Listing types —
For Retail,For Lease, andFor Fractional Ownership
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | Array | Cessna sample | Search, category, dealer inventory, or detail URLs |
searchQuery | String | — | Keywords (make, model, registration, serial) |
listingType | String | For Retail | For Retail, For Lease, or For Fractional Ownership |
manufacturer | String | — | e.g. CESSNA, CIRRUS, BEECHCRAFT (comma-separated) |
category | String | — | Category id (3 jets, 8 turboprop, 6 piston single, 7 turbine helicopters) |
accountCrmId | String | — | Dealer AccountCRMID inventory watch |
state / country | String | — | Location filters when building a search URL |
condition | String | — | New or Used |
registrationNumber | String | — | Exact N-number / registration lookup |
runMode | String | listings | listings or details |
pricedOnly | Boolean | false | Keep only rows with a published price |
maxItems | Integer | 100 | Emit budget (seed run: fingerprint budget) |
maxPagesPerUrl | Integer | 10 | Pages per start URL (~28 listings/page) |
monitorMode | Boolean | false | Delta tracking via named KV store |
monitorStoreName | String | controller-com-monitor-state | Distinct name per watch target |
proxyConfiguration | Object | US Residential prefill | Apify proxy settings |
{"searchQuery": "Cirrus SR22","listingType": "For Retail","runMode": "listings","maxItems": 50,"maxPagesPerUrl": 3,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
{"category": "3","yearMin": 2015,"totalTimeMax": 4000,"pricedOnly": true,"sort": "priceHighLow","maxItems": 100}
{"accountCrmId": "8309467","runMode": "listings","monitorMode": true,"monitorStoreName": "controller-iams-jets","maxItems": 500,"maxPagesPerUrl": 20}
With monitorMode: true, the first run seeds fingerprints and writes no dataset rows. Later scheduled runs emit only changeType: "new" or "price_change".
Output
| Field | Description |
|---|---|
id | Listing id |
title / make / model / year | Aircraft identity |
price / currency / priceFormatted / priceOnRequest | Asking price when published |
totalTime / totalTimeHours / registrationNumber / serialNumber | Airframe identity and hours |
engine1MakeModel / engine1Time / seats / flightRules | Common aviation specs |
additionalSpecs | Any other published spec (winglets, APU, programs, …) |
dealerName / dealerPhone / dealerContact | Seller contact |
accountCrmId | Dealer account key for inventory watch URLs |
location / city / state / country | Aircraft location |
images / imageCount | Photo URLs |
changeType / previousPrice / monitoredAt | Monitor deltas only |
{"id": "258432389","title": "2016 CESSNA CITATION LATITUDE","make": "CESSNA","model": "CITATION LATITUDE","year": "2016","price": null,"currency": "USD","priceFormatted": "Call for price","priceOnRequest": true,"condition": "Used","category": "Jet Aircraft","totalTimeHours": 3552,"serialNumber": "680A-0067","registrationNumber": "N518KB","engine1MakeModel": "PRATT & WHITNEY PW306D1","dealerName": "International Aircraft Marketing & Sales","dealerPhone": "(941) 961-4245","accountCrmId": "8309467","location": "Orlando, Florida","url": "https://www.controller.com/listing/for-sale/258432389/2016-cessna-citation-latitude-jet-aircraft"}
Use cases
- Aircraft brokers — monitor new and competitor listings by category, price band, or region
- Market research — track asking prices across manufacturers, years, and aircraft categories
- Aviation finance & leasing — source retail, lease, and fractional-ownership inventory
- Aircraft valuation tools — build comparable datasets from published listings
- Buyer's agents — shortlist aircraft matching budget, hours, seats, and location
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/controller-com-scraper').call({manufacturer: 'CESSNA',category: '3',runMode: 'listings',maxItems: 40,pricedOnly: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("crawloop/controller-com-scraper").call(run_input={"searchQuery": "Cirrus SR22","runMode": "listings","maxItems": 40,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item.get("priceFormatted"), item.get("dealerPhone"))
cURL
curl "https://api.apify.com/v2/acts/crawloop~controller-com-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d "{\"manufacturer\":\"CESSNA\",\"category\":\"3\",\"maxItems\":25,\"runMode\":\"listings\"}"
MCP and AI assistants
Use this Actor from AI tools via Apify MCP.
Connect your Apify account, then call this Actor by its Store ID crawloop/controller-com-scraper.
Example prompts:
- "Run Controller.com Scraper for Cessna jets, max 40, priced only, and return title, price, totalTimeHours, registrationNumber, dealerPhone as JSON"
- "Monitor dealer AccountCRMID 8309467 on Controller.com and list only new or price-changed rows"
- "Scrape Controller.com listings for Cirrus SR22, then look up avionics catalogs with AeroExpo Scraper"
Suite next step
After used-aircraft asking prices, pull aeronautical product catalogs (avionics, GSE, UAV) with AeroExpo Scraper, or US heavy equipment comps with MachineryTrader Scraper.
FAQ
Is this a Controller.com API?
There is no official public bulk API for most users. This Actor is a structured scrape / API alternative that returns a dataset you can call from Python, Node.js, cURL, or MCP.
Do I need details mode for dealer phones?
Usually no — retail cards already expose dealerPhone, location, total time, and registration. Use details when you need canonical URL, breadcrumbs, or video.
How do I watch one dealer?
Set accountCrmId (from any listing card) or paste a dealer inventory search URL, enable monitorMode, pick a unique monitorStoreName, and schedule the Actor.
Why is price missing on some listings?
Sellers often list "Call for price". Those rows get priceOnRequest: true and no numeric price. Turn on pricedOnly to skip them.
Which proxy should I use?
Apify Residential with apifyProxyCountry: "US" is recommended — the site sits behind Cloudflare.
Can I search by N-number?
Yes — set registrationNumber (exact match) or put the N-number in searchQuery.
Does Controller EMEA use a different catalog?
The .co.uk front is the same Sandhills inventory. Switch baseUrl if you need that host; filters and fields are the same.
Related Actors
| Actor | Role |
|---|---|
| AeroExpo Scraper | Aeronautical product catalogs, specs, PDF datasheets |
| MachineryTrader Scraper | US Sandhills heavy equipment + dealer monitor |
| TractorHouse Scraper | US / EU Sandhills farm equipment |
| TruckPaper Scraper | US commercial trucks and trailers |