# Starlink Availability, Speed & Price Scraper (`rainminer/starlink-availability-scraper`) Actor

Look up Starlink availability, typical speeds, and prices for any address. See if service is offered, plus download and upload ranges, latency, and the monthly residential, roam, and priority plans shown for that location. Built for site selection, rural coverage checks, and quoting options online.

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

## Pricing

from $1.49 / 1,000 locations

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

### What does Starlink Availability Scraper do?

**Starlink Availability Scraper** looks up any address on the public [Starlink map](https://starlink.com/map) and returns whether service is available, the typical download, upload, and latency ranges, and the monthly service and hardware prices shown for that location. Paste addresses and export a dataset. No Starlink account is required.

The closest public address suggestion is used, then the result follows the same availability and speed ranges the map shows for that place. Prices are the residential, roam, local priority, land mobility, and global priority options published for the country, including hardware kits when they are listed.

### Why look up Starlink availability?

- **Rural home buyers** — Check a property address before you make an offer.
- **Cabin and job sites** — See whether a remote build site can get service.
- **Backup offices** — Compare a second location for failover internet.
- **Roam and travel** — Look up an address before you buy a mobile kit.
- **Franchise site selection** — Screen several storefronts in one run.
- **Coverage status** — Read available, coming soon, sold out, or pending regulatory approval per address.
- **Quoting** — Capture monthly plan prices, currencies, and hardware options.
- **International moves** — See when a country is still waiting on approval.
- **Monitoring** — Schedule the same address list and watch for price or status changes.
- **Exports** — Download JSON, HTML, CSV, or Excel, or call the Actor from the API.

### What Starlink data can you extract?

| Field                                 | Description                                                                     |
| ------------------------------------- | ------------------------------------------------------------------------------- |
| id                                    | The address you submitted, one stable id per row                                |
| formattedAddress                      | Address matched from your query                                                 |
| availabilityLabel                     | Available now, coming soon, sold out, pending approval, or not available        |
| isAvailable                           | True when service is offered now                                                |
| downloadSpeed / uploadSpeed / latency | Regional peak-hour ranges shown on the map                                      |
| monthlyPriceFrom                      | Lowest monthly service price across the plans returned                          |
| currency                              | Currency for that starting price                                                |
| servicePlans                          | Residential, Roam, Local Priority, Land Mobility, and Global Priority options   |
| hardwareOptions                       | Kit prices, including a list price when a promotion changes the displayed price |
| dataBlocks                            | Extra data blocks and prices when a plan lists them                             |
| imageUrls                             | Plan and hardware images on the full row, when Starlink publishes them         |
| latitude / longitude                  | Map coordinates for the matched address                                         |
| mapUrl                                | Link back to the Starlink map                                                   |

Speeds are the regional ranges on the map, measured for the residential plan during peak local hours. They are not a speed test of one building, and Starlink does not guarantee them.

### How to look up Starlink availability

1. Open **Starlink Availability Scraper** in Apify Console.
2. Add one address per line under **Addresses**. Street addresses and well-known places both work.
3. Set **Maximum items** if you want to cap saved rows per address. Each address produces one row.
4. Leave the datacenter proxy on for a long address list. Turn it off only for a short test.
5. Start the run and download the dataset as JSON, HTML, CSV, or Excel.

Example addresses:

- `1600 Amphitheatre Parkway, Mountain View, CA`
- `10 Downing Street, London`
- `Gateway of India, Mumbai`

### Input

**Addresses** are required. **Maximum items** limits saved rows per address (default 3; each address returns one location row). **Proxy configuration** uses a datacenter proxy by default. See the **Input** tab for the full form.

### Output example

You can download the dataset extracted by Starlink Availability Scraper in various formats such as JSON, HTML, CSV, or Excel.

```json
{
  "id": "1600 Amphitheatre Parkway, Mountain View, CA",
  "addressQuery": "1600 Amphitheatre Parkway, Mountain View, CA",
  "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
  "locality": "Mountain View",
  "administrativeArea": "California",
  "regionCode": "US",
  "latitude": 37.4215571,
  "longitude": -122.0839863,
  "mapUrl": "https://starlink.com/map",
  "availabilityStatus": "launched",
  "availabilityLabel": "Available now",
  "isAvailable": true,
  "downloadSpeed": "179–303 Mbps",
  "uploadSpeed": "24–44 Mbps",
  "latency": "21–29 ms",
  "monthlyPriceFrom": 55,
  "currency": "USD",
  "servicePlans": [
    {
      "family": "Residential",
      "available": true,
      "name": "Residential 100 Mbps",
      "price": 55,
      "currency": "USD"
    },
    {
      "family": "Residential",
      "available": true,
      "name": "Residential 200 Mbps",
      "price": 85,
      "currency": "USD"
    }
  ],
  "hardwareOptions": [
    {
      "family": "Roam",
      "name": "Starlink Mini Kit",
      "price": 149,
      "currency": "USD"
    }
  ],
  "error": null
}
```

A location with no public match is still saved, with `error` set and the other fields null, so a long address list does not silently drop a row.

### How much does it cost to look up Starlink prices?

On the Apify Store, locations are **$1.99 per 1,000** on the free plan and **$1.49 per 1,000** on the Gold plan, plus a small start fee. Platform usage is included. A few addresses finish in seconds. The default datacenter proxy keeps a longer list from being throttled, and each country price list is loaded once per run.

### Is it legal to scrape Starlink availability?

This Actor reads the public Starlink map and the public prices shown for a location. It does not log in, and it does not collect private account, payment, or customer data. Availability, speeds, and prices can change, and your use of the data must comply with Starlink’s terms and with privacy laws that apply to you. If you are unsure, review the terms and get advice for your use case.

### Tips

- Use a full street address when several places share a name. The first public suggestion is the one that gets checked.
- `monthlyPriceFrom` is the lowest monthly service price in the row, which can be a roam or priority plan rather than residential. Read `servicePlans` for the full set.
- Countries that are pending approval or not offered often have empty prices and no speed range. That matches the map.
- Hardware `price` is the amount shown to customers. `listPrice` is set when a promotion displays a different amount.
- Schedule the Actor if you want to revisit the same address list later.

# Actor input Schema

## `addresses` (type: `array`):

Street addresses, place names, or postal addresses to check on the Starlink map. One address per line. The closest public suggestion is used.

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

Maximum number of location results to save per address. Each address produces one row.

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

Proxy settings. Datacenter proxy is on by default so a long address list is not throttled. Turn it off for a short test.

## Actor input object example

```json
{
  "addresses": [
    "1600 Amphitheatre Parkway, Mountain View, CA",
    "10 Downing Street, London",
    "Gateway of India, Mumbai"
  ],
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "addresses": [
        "1600 Amphitheatre Parkway, Mountain View, CA",
        "10 Downing Street, London",
        "Gateway of India, Mumbai"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/starlink-availability-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 = {
    "addresses": [
        "1600 Amphitheatre Parkway, Mountain View, CA",
        "10 Downing Street, London",
        "Gateway of India, Mumbai",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/starlink-availability-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 '{
  "addresses": [
    "1600 Amphitheatre Parkway, Mountain View, CA",
    "10 Downing Street, London",
    "Gateway of India, Mumbai"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rainminer/starlink-availability-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/starlink-availability-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/EOneW2F61jgkBpb6Q/builds/D2cR5BSQEd2tqgI4m/openapi.json
