# GlobalAir Scraper (`crawlerbros/globalair-scraper`) Actor

Scrape aircraft-for-sale listings from GlobalAir.com - registration number, total airframe time, make, model, year, engine/avionics/interior/exterior specs, price, location, seller contact, and photos. Browse by aircraft category, filter by make/year, or fetch specific listing URLs.

- **URL**: https://apify.com/crawlerbros/globalair-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## GlobalAir Scraper

Scrape aircraft-for-sale listings from [GlobalAir.com](https://www.globalair.com/aircraft-for-sale) — one of the largest online marketplaces for used and new aircraft. Get registration numbers, total airframe time, make/model/year, engine and avionics specs, interior/exterior condition, price, location, and seller contact details for single-engine pistons, twin pistons, turboprops, jets, helicopters, and more. No login or API key required.

### What this actor does

- **Browse by aircraft category** — single engine piston, twin engine piston, single engine turbine, twin turbo prop, private jet, helicopter, commercial, amphibian, experimental/kit, vintage, warbird, or light sport
- **Filter by make/manufacturer** (Cessna, Piper, Cirrus, Beechcraft, Gulfstream, and more)
- **Filter by keyword** (model or designation, e.g. `SR22`, `172`, `G450`)
- **Filter by year range**
- **Fetch specific listings directly** by URL
- Pulls full listing-detail specs — registration number, engine, propeller, avionics, interior, exterior, maintenance history, and photos
- Empty/unavailable fields are omitted — never null placeholders

### Output per listing

- `title`, `make`, `model`, `designation`, `classification`, `year`
- `registrationNumber` — FAA N-number (or equivalent) when the listing publishes it
- `serialNumber`, `totalTimeHours`, `totalTime`
- `price`, `priceCurrency` — included only when the seller has published a firm price
- `pricingNote` — shown instead of price when the seller requires a direct inquiry (e.g. "Please Call")
- `priceLastUpdated`
- `location`, `sellerName`, `sellerPhone`, `sellerEmail`
- `engineDetails`, `propellerDetails`, `avionicsPackage`, `avionicsDetails`
- `airframeDetails`, `interiorDetails`, `exteriorDetails`, `additionalEquipment`, `maintenanceDetails`
- `summary`
- `images[]` — listing photos
- `listingUrl`, `listingId`
- `recordType: "aircraftListing"`, `scrapedAt`

**Note on price:** Aircraft pricing on GlobalAir.com is frequently withheld pending direct buyer contact ("Please Call", "Contact Seller"). Rather than emit a misleading `null` or `0`, this actor only includes the `price` field when the seller has published a real numeric price. Listings without a public price instead carry a `pricingNote` field describing how to inquire.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` (browse/filter) or `byListingUrls` (fetch specific URLs) |
| `classification` | select | `single-engine-piston` | Aircraft category, or "Any category" to rotate through all |
| `make` | string | – | Manufacturer filter (partial, case-insensitive) |
| `keyword` | string | – | Filter by title/model/designation text |
| `yearMin` | integer | – | Drop aircraft manufactured before this year |
| `yearMax` | integer | – | Drop aircraft manufactured after this year |
| `priceMin` | integer | – | Drop listings priced below this amount (USD); listings without a published price are excluded when this filter is set |
| `priceMax` | integer | – | Drop listings priced above this amount (USD); listings without a published price are excluded when this filter is set |
| `totalTimeMin` | integer | – | Drop aircraft with total airframe hours below this amount |
| `totalTimeMax` | integer | – | Drop aircraft with total airframe hours above this amount |
| `listingUrls` | array | – | Listing-detail URLs to fetch directly (mode=byListingUrls) |
| `maxItems` | integer | `25` | Hard cap on emitted records (1–500) |

#### Example: browse single engine pistons made by Cessna, 2010+

```json
{
  "mode": "search",
  "classification": "single-engine-piston",
  "make": "Cessna",
  "yearMin": 2010,
  "maxItems": 50
}
````

#### Example: browse private jets, no filters

```json
{
  "mode": "search",
  "classification": "private-jet",
  "maxItems": 30
}
```

#### Example: fetch specific listings

```json
{
  "mode": "byListingUrls",
  "listingUrls": [
    "https://www.globalair.com/aircraft-for-sale/listing-detail/2008-malibu-matrix-pa-46r-350t-singles/141588"
  ]
}
```

### Use cases

- **Aircraft brokers and dealers** — monitor competing listings across categories and manufacturers
- **Buyers** — track newly listed aircraft matching make/model/year/budget criteria
- **Market research** — analyze pricing and inventory trends across aircraft categories
- **Fleet acquisition** — bulk-export candidate aircraft with full spec sheets for evaluation
- **Insurance and finance** — pull registration, total time, and condition data for underwriting

### FAQ

**Do I need an account or API key?** No — GlobalAir.com listings are publicly accessible, and this actor requires no login, cookies, or API key.

**Why is `price` missing from some records?** GlobalAir sellers frequently gate price behind a "Please Call" or "Contact Seller" prompt rather than publishing a number. Those listings carry a `pricingNote` field instead of a fabricated price.

**What's `registrationNumber`?** The aircraft's official civil registration mark (the FAA "N-number" in the US, or the equivalent mark in other registries), pulled from the listing's detail page when published.

**Can I browse every category in one run?** Yes — set `classification` to "Any category" and the actor rotates through all 12 categories until `maxItems` is reached.

**How current is the data?** Listings are scraped live on every run — whatever is published on GlobalAir.com at request time.

**What does `totalTimeHours` mean?** The aircraft's total airframe flight hours since new, as published by the seller.

**Are photos included?** Yes, `images[]` contains publicly hosted listing photos (when the listing includes them).

# Actor input Schema

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

What to fetch.

## `classification` (type: `string`):

Aircraft category to browse (mode=search). Choose "Any category" to rotate through all categories.

## `make` (type: `string`):

Filter to listings whose manufacturer matches this text (e.g. `Cessna`, `Piper`, `Cirrus`, `Beechcraft`, `Gulfstream`). Case-insensitive partial match. Leave blank for all makes.

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

Filter to listings whose title, model, or designation contains this text (e.g. `SR22`, `172`, `G450`).

## `yearMin` (type: `integer`):

Drop aircraft manufactured before this year.

## `yearMax` (type: `integer`):

Drop aircraft manufactured after this year.

## `priceMin` (type: `integer`):

Drop listings with a published price below this amount (mode=search only; applied server-side by GlobalAir.com). Listings with no published price ('Please Call') are excluded when this filter is set, since their price cannot be confirmed to match.

## `priceMax` (type: `integer`):

Drop listings with a published price above this amount (mode=search only; applied server-side by GlobalAir.com). Listings with no published price ('Please Call') are excluded when this filter is set, since their price cannot be confirmed to match.

## `totalTimeMin` (type: `integer`):

Drop aircraft with total airframe hours below this amount (mode=search only; applied server-side by GlobalAir.com).

## `totalTimeMax` (type: `integer`):

Drop aircraft with total airframe hours above this amount (mode=search only; applied server-side by GlobalAir.com).

## `listingUrls` (type: `array`):

Specific GlobalAir listing-detail URLs to fetch, e.g. `https://www.globalair.com/aircraft-for-sale/listing-detail/2008-malibu-matrix-pa-46r-350t-singles/141588`.

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

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "classification": "single-engine-piston",
  "listingUrls": [],
  "maxItems": 25
}
```

# Actor output Schema

## `listings` (type: `string`):

Dataset containing all scraped aircraft listings.

# 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 = {
    "mode": "search",
    "classification": "single-engine-piston",
    "listingUrls": [],
    "maxItems": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/globalair-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 = {
    "mode": "search",
    "classification": "single-engine-piston",
    "listingUrls": [],
    "maxItems": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/globalair-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "classification": "single-engine-piston",
  "listingUrls": [],
  "maxItems": 25
}' |
apify call crawlerbros/globalair-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/globalair-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GlobalAir Scraper",
        "description": "Scrape aircraft-for-sale listings from GlobalAir.com - registration number, total airframe time, make, model, year, engine/avionics/interior/exterior specs, price, location, seller contact, and photos. Browse by aircraft category, filter by make/year, or fetch specific listing URLs.",
        "version": "1.0",
        "x-build-id": "TtaWYQjMT4osYKhsh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~globalair-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-globalair-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~globalair-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-globalair-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~globalair-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-globalair-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byListingUrls"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "classification": {
                        "title": "Aircraft category",
                        "enum": [
                            "any",
                            "single-engine-piston",
                            "twin-engine-piston",
                            "single-engine-turbine",
                            "twin-engine-turbine",
                            "private-jet",
                            "helicopters",
                            "commercial",
                            "amphibian",
                            "experimental-kit",
                            "vintage",
                            "warbird",
                            "light-sport"
                        ],
                        "type": "string",
                        "description": "Aircraft category to browse (mode=search). Choose \"Any category\" to rotate through all categories.",
                        "default": "single-engine-piston"
                    },
                    "make": {
                        "title": "Make / manufacturer",
                        "type": "string",
                        "description": "Filter to listings whose manufacturer matches this text (e.g. `Cessna`, `Piper`, `Cirrus`, `Beechcraft`, `Gulfstream`). Case-insensitive partial match. Leave blank for all makes."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Filter to listings whose title, model, or designation contains this text (e.g. `SR22`, `172`, `G450`)."
                    },
                    "yearMin": {
                        "title": "Year (min)",
                        "minimum": 1920,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Drop aircraft manufactured before this year."
                    },
                    "yearMax": {
                        "title": "Year (max)",
                        "minimum": 1920,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Drop aircraft manufactured after this year."
                    },
                    "priceMin": {
                        "title": "Price (min, USD)",
                        "minimum": 0,
                        "maximum": 100000000,
                        "type": "integer",
                        "description": "Drop listings with a published price below this amount (mode=search only; applied server-side by GlobalAir.com). Listings with no published price ('Please Call') are excluded when this filter is set, since their price cannot be confirmed to match."
                    },
                    "priceMax": {
                        "title": "Price (max, USD)",
                        "minimum": 0,
                        "maximum": 100000000,
                        "type": "integer",
                        "description": "Drop listings with a published price above this amount (mode=search only; applied server-side by GlobalAir.com). Listings with no published price ('Please Call') are excluded when this filter is set, since their price cannot be confirmed to match."
                    },
                    "totalTimeMin": {
                        "title": "Total time (min, hours)",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Drop aircraft with total airframe hours below this amount (mode=search only; applied server-side by GlobalAir.com)."
                    },
                    "totalTimeMax": {
                        "title": "Total time (max, hours)",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Drop aircraft with total airframe hours above this amount (mode=search only; applied server-side by GlobalAir.com)."
                    },
                    "listingUrls": {
                        "title": "Listing URLs (mode=byListingUrls)",
                        "type": "array",
                        "description": "Specific GlobalAir listing-detail URLs to fetch, e.g. `https://www.globalair.com/aircraft-for-sale/listing-detail/2008-malibu-matrix-pa-46r-350t-singles/141588`.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 25
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
