# BLM National Mining Claims (MLRS) Scraper (`scrapers_lat/blm-mining-claims-scraper`) Actor

Scrape US BLM national mining claims (MLRS): serial number, claim name, type (lode/placer/mill/tunnel), disposition, recorded acres, PLSS legal description, state and map centroid. Filter by state, type, status, keyword and recorded date. JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/blm-mining-claims-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Real estate, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.32 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## BLM National Mining Claims (MLRS) Scraper

Pull the United States' national inventory of **mining claims** straight from the Bureau of Land Management's **Mineral & Land Records System (MLRS)** — every lode, placer, mill-site and tunnel-site claim on federal land, active or closed, as a clean structured dataset you can filter, map and export.

Built for **mineral explorers, land men, title researchers, royalty and mineral-rights investors, and market analysts** who need to know what ground is staked, where, and when.

### What you get

One row per mining claim, including:

- **Serial number** — the unique BLM case number (e.g. `NV105216280`)
- **Claim name** — as staked and recorded (e.g. `GOLDEN ARROW #1`)
- **Claim type** — Lode Claim, Placer Claim, Mill Site or Tunnel Site
- **Disposition / status** — Active, Closed, Void, Relinquished, Expired, and more
- **Recorded acres**
- **PLSS legal description** — full meridian / township / range / section / aliquot parts, plus parsed `meridian`, `township`, `range` and `section` fields
- **State**
- **Recorded (created) and last-modified dates**
- **Map location** — approximate centroid latitude/longitude, and optionally the full claim **boundary polygon** as GeoJSON
- **MLRS lookup URL** — a direct link to the BLM case-search page for that serial number

### Filters

- **Claim status layer** — active (not closed), closed, or both
- **US states** — one or many (Nevada, Arizona and California hold the most claims)
- **Claim types** — lode, placer, mill site, tunnel site
- **Disposition / status**
- **Claim name keyword** — e.g. `GOLD`, `LITHIUM`, or a project name
- **Serial numbers** — look up exact claims directly
- **Recorded-date range** — catch newly staked ground
- **Recorded-acres range**

Every filter is applied at the source, so runs are fast and you only pay for the claims you actually want.

### Output

JSON, CSV, Excel, or via the Apify API. Ready for GIS (the centroid and optional GeoJSON boundary drop straight into a map) and for spreadsheets.

### Good to know

- This is the **claim/case record** — serial number, name, type, status, acreage, legal description and geometry. The **claimant/owner name is not published in this layer**; it lives in the MLRS case detail. The `detailSearchUrl` on every row links to the BLM lookup for that serial number so you can pull the owner where needed.
- **County is not a field** in the source data; location is given as PLSS legal description plus map coordinates.
- Public BLM data. No account or API key required.

### Pricing

Pay per result — you are charged only for claims actually returned, never for a failed or empty run.

# Actor input Schema

## `claimStatus` (type: `string`):

Which BLM mining-claim layer to pull. 'Active / not closed' = claims still on the books (staked, active, pending). 'Closed' = expired, void, relinquished or otherwise terminated claims. 'Both' searches each layer in turn.

## `states` (type: `array`):

Two-letter administrative state codes (for example 'NV', 'AZ', 'CA', 'CO'). Nevada, Arizona and California hold most claims. Leave empty for every state.

## `claimTypes` (type: `array`):

Limit to certain claim types. Leave empty for all.

## `dispositions` (type: `array`):

Filter by case disposition exactly as BLM records it (for example 'Active', 'Closed', 'Void', 'Relinquished', 'Expired'). Case-insensitive. Leave empty for all.

## `nameKeyword` (type: `string`):

Only claims whose name contains this text, for example 'GOLD', 'SILVER', 'LITHIUM' or a project name. Case-insensitive substring match.

## `serialNumbers` (type: `array`):

Optional. Look up exact BLM case serial numbers directly (for example 'NV105216280'). When given, these are fetched instead of running the state/type search.

## `recordedFrom` (type: `string`):

Only claims recorded (created in MLRS) on or after this date (YYYY-MM-DD). The best way to catch newly staked ground. Leave empty for the full archive.

## `recordedTo` (type: `string`):

Only claims recorded on or before this date (YYYY-MM-DD). Leave empty for the full archive.

## `minRecordedAcres` (type: `integer`):

Only claims with at least this many recorded acres. Leave empty for no minimum.

## `maxRecordedAcres` (type: `integer`):

Only claims with at most this many recorded acres. Leave empty for no maximum.

## `includeGeometry` (type: `boolean`):

Also return the full claim boundary polygon (GeoJSON) in addition to the map centroid. Off by default to keep records small; the centroid latitude/longitude is always included.

## `maxRecords` (type: `integer`):

Stop after this many claims. Free Apify accounts are capped at 10 per run.

## Actor input object example

```json
{
  "claimStatus": "active",
  "states": [
    "NV"
  ],
  "includeGeometry": false,
  "maxRecords": 10
}
```

# 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 = {
    "states": [
        "NV"
    ],
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/blm-mining-claims-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 = {
    "states": ["NV"],
    "maxRecords": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/blm-mining-claims-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 '{
  "states": [
    "NV"
  ],
  "maxRecords": 10
}' |
apify call scrapers_lat/blm-mining-claims-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/blm-mining-claims-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/MadIESp1dJerwNcQM/builds/gVg5OFvNaoYEYxKnC/openapi.json
