USGS LiDAR Downloads Scraper avatar

USGS LiDAR Downloads Scraper

Pricing

from $1.16 / 1,000 item extracteds

Go to Apify Store
USGS LiDAR Downloads Scraper

USGS LiDAR Downloads Scraper

Search the official USGS 3DEP LiDAR catalog by bounding box and acquisition date. Export direct LAS/LAZ links with collection, CRS, quality, and file metadata.

Pricing

from $1.16 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Find USGS LiDAR downloads for a WGS84 bounding box and optional acquisition dates. The Actor searches the official USGS 3D Elevation Program (3DEP) collection index, expands matching collections into direct LAS/LAZ download URLs, and saves one file per dataset row with acquisition, CRS, quality, size, and provenance metadata.

It does not download the point clouds themselves. You receive reusable public URLs that can feed GIS, terrain, construction, forestry, and mapping pipelines. No USGS account or API key is required.

What can you do with this Actor?

  • Find public LiDAR files intersecting an area of interest.
  • Restrict collections by acquisition-date overlap.
  • Export direct .las and .laz URLs without clicking through a map application.
  • Capture USGS work-unit, project, quality-level, specification, and CRS fields.
  • Include HTTP file size and last-modified metadata without downloading large point clouds.
  • Schedule the same input to discover changes in a recurring acquisition area.
  • Send results to a dataset, spreadsheet, database, webhook, or downstream Apify Actor.

Who is it for?

GIS analysts can assemble source-file inventories before terrain processing.

Surveying and construction teams can check which public acquisitions cover a project area.

Forestry and environmental teams can refresh source links for repeat analyses.

Data engineers can turn the USGS catalog into typed rows for ETL pipelines.

Researchers and public agencies can preserve collection provenance alongside download URLs.

Why use this instead of the USGS map UI?

The National Map and LiDAR Explorer are useful interactive tools. This Actor is designed for repeatable machine-to-machine work:

  1. The area is a stable JSON bounding box.
  2. Date filtering is reproducible.
  3. Each file becomes a structured row.
  4. Runs can be scheduled and compared.
  5. Direct links are ready for a downloader or geospatial pipeline.
  6. Results retain the collection context needed for audits.

The data still comes from official public USGS services. The Actor is not a mirror and does not claim ownership of the source data.

Data extracted

FieldMeaning
fileNameLAS/LAZ file name
fileFormatLAS or LAZ
downloadUrlDirect public USGS file URL
fileSizeBytesByte size from a HEAD request, when enabled
fileLastModifiedFile-server last-modified timestamp
collectionIdUSGS work-unit ID
collectionNameUSGS work-unit name
projectId / projectNameParent acquisition project
acquisitionStartDateAcquisition interval start
acquisitionEndDateAcquisition interval end
publicationDateUSGS LPC publication date
qualityLevel3DEP quality level, such as QL 2
specificationUSGS LiDAR base specification
pointCloudMethodAcquisition method reported by USGS
nominalResolutionMetersCatalog resolution value
horizontalCrsHorizontal CRS code
verticalCrsVertical CRS code
geoidGeoid model
threeDepStatusWhether the LPC meets 3DEP requirements
threeDepStatusReasonUSGS status explanation
boundsCollection footprint bounds in WGS84
collectionDownloadUrlPublic collection directory
metadataUrlCollection metadata directory
sourceCatalogUrlOfficial source service
retrievedAtRecord retrieval timestamp

USGS fields can be null for legacy collections. The dataset schema keeps those values nullable rather than inventing replacements.

Getting started

  1. Open the Actor input page.
  2. Enter a bounding box in WGS84 longitude/latitude order.
  3. Optionally enter fromDate and toDate.
  4. Choose the maximum files and collections.
  5. Keep Fetch file sizes enabled when byte sizes are useful.
  6. Click Start.
  7. Open the dataset to download JSON, CSV, Excel, XML, or RSS.

A small working input is:

{
"boundingBox": {
"west": -105.01,
"south": 39.73,
"east": -105.0,
"north": 39.74
},
"maxItems": 10,
"maxCollections": 10,
"includeFileMetadata": true
}

Input parameters

boundingBox (required)

A WGS84 envelope with west, south, east, and north numbers. The Actor rejects reversed or out-of-range coordinates. Antimeridian-crossing boxes are not supported in one run; split them into two runs.

fromDate and toDate

Optional dates in YYYY-MM-DD format. A collection is included when its acquisition interval overlaps the requested interval. This is not a file publication-date filter.

maxItems

Maximum file rows saved across all matching collections. Allowed range: 1–10,000. The default is 100.

maxCollections

Maximum collection footprints inspected, newest publication first. Allowed range: 1–200. The default is 50. Increase it for broad areas with many overlapping acquisitions.

includeFileMetadata

When true, the Actor sends a HEAD request for each selected URL and records size and last-modified time. When false, it exports links faster and sets those two fields to null. The point-cloud body is never downloaded in either mode.

Date-filter example

This input returns files from collections whose acquisition intervals overlap 2020:

{
"boundingBox": {
"west": -105.05,
"south": 39.7,
"east": -104.95,
"north": 39.8
},
"fromDate": "2020-01-01",
"toDate": "2020-12-31",
"maxItems": 25,
"maxCollections": 25,
"includeFileMetadata": false
}

Output example

A real small Denver-area run produced rows shaped like this:

{
"recordType": "lidar-file",
"fileName": "USGS_LPC_CO_DRCOG_2020_B20_w0541n4408.laz",
"fileFormat": "LAZ",
"downloadUrl": "https://rockyweb.usgs.gov/vdelivery/Datasets/Staged/Elevation/LPC/Projects/CO_DRCOG_2020_B20/CO_DRCOG_2_2020/LAZ/USGS_LPC_CO_DRCOG_2020_B20_w0541n4408.laz",
"fileSizeBytes": 58418038,
"fileLastModified": "2021-12-22T20:24:50.000Z",
"collectionId": 219104,
"collectionName": "CO_DRCOG_2_2020",
"projectId": 193312,
"projectName": "CO_DRCOG_2020_B20",
"acquisitionStartDate": "2020-05-26T00:00:00.000Z",
"acquisitionEndDate": "2020-06-12T00:00:00.000Z",
"qualityLevel": "QL 2",
"specification": "USGS Lidar Base Specification 2.1",
"horizontalCrs": "6342",
"verticalCrs": "5703",
"geoid": "GEOID18",
"threeDepStatus": "Meets",
"collectionDownloadUrl": "https://rockyweb.usgs.gov/vdelivery/Datasets/Staged/Elevation/LPC/Projects/CO_DRCOG_2020_B20/CO_DRCOG_2_2020",
"sourceCatalogUrl": "https://index.nationalmap.gov/arcgis/rest/services/3DEPElevationIndex/MapServer/8"
}

File order inside a USGS manifest is source-controlled and should not be treated as a spatial ranking.

The Actor uses pay-per-event pricing. A run has a $0.00005 start fee and one item event for each saved file row. The current BRONZE item price is $0.001932 per file; higher tiers receive lower unit prices.

File rowsExample BRONZE charge
10.001982 USD
100.01937 USD
1000.19325 USD
1,0001.93205 USD

The file-size HEAD lookup has no separate event charge. Failed, duplicate, or unsaved links are not charged as items. Actual platform billing is shown before and after each run in Apify Console.

Recurring acquisition workflow

For a recurring feed:

  1. Save a task with a stable project bounding box.
  2. Set fromDate to the earliest relevant acquisition date.
  3. Schedule the task weekly or monthly.
  4. Export downloadUrl plus collectionId as a natural comparison key.
  5. Compare the current dataset with a stored prior snapshot.
  6. Send newly observed URLs to a downloader or processing queue.

The Actor reports current public catalog state; it does not maintain history or send alerts by itself. Apify schedules, webhooks, and integrations supply those surrounding workflow steps.

GIS and data-pipeline integrations

Common patterns include:

  • Export CSV to Google Sheets for acquisition review.
  • Push JSON to Amazon S3 or a data warehouse.
  • Use downloadUrl values in PDAL, Entwine, or cloud ingestion jobs.
  • Filter rows by qualityLevel, CRS, or 3DEP status before download.
  • Trigger a webhook when a scheduled run finishes.
  • Join file rows to project boundaries by collectionId and bounds.

Always check storage and transfer costs before downloading large point-cloud files downstream.

Use the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~public-lidar-dataset-catalog-exporter/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"boundingBox": {"west": -105.01, "south": 39.73, "east": -105.0, "north": 39.74},
"maxItems": 10,
"includeFileMetadata": true
}'

Do not commit your Apify token to source control.

Use the Apify API with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/public-lidar-dataset-catalog-exporter').call({
boundingBox: { west: -105.01, south: 39.73, east: -105.0, north: 39.74 },
maxItems: 10,
includeFileMetadata: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((item) => item.downloadUrl));

Use the Apify API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/public-lidar-dataset-catalog-exporter').call(run_input={
'boundingBox': {'west': -105.01, 'south': 39.73, 'east': -105.0, 'north': 39.74},
'maxItems': 10,
'includeFileMetadata': True,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['downloadUrl'])

Use with MCP and AI agents

Claude Code

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/public-lidar-dataset-catalog-exporter"

Claude Desktop

Add this server to the Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/public-lidar-dataset-catalog-exporter"
}
}
}

Cursor

Add the same HTTP URL as an MCP server in Cursor Settings → MCP.

VS Code

Add the same HTTP URL to the MCP servers configured by your VS Code AI extension.

Example prompts:

  • “Find up to 20 USGS LiDAR files near downtown Denver and show their sizes.”
  • “Export LAZ links for collections acquired in 2020 inside this bounding box.”
  • “Run my saved LiDAR task and summarize quality levels and coordinate systems.”

Reliability and failure behavior

The Actor uses two official public USGS surfaces:

  1. the 3DEP collection footprint service;
  2. public collection file manifests.

Each request has a bounded timeout. If one collection manifest fails, the Actor logs a warning and continues with other collections. If a file HEAD request fails, its direct URL is preserved with null size metadata. If the catalog request or input validation fails, the run fails visibly instead of returning misleading data.

No proxy is used or required for the supported route.

Limits and source caveats

  • Broad bounding boxes can match more collections than maxCollections.
  • maxItems stops output even if additional files exist.
  • Legacy records may lack CRS, quality, dates, or metadata links.
  • Collection bounds describe the acquisition footprint, not each individual tile.
  • USGS can reorganize files or update metadata after a run.
  • A direct link may later move or become temporarily unavailable.
  • The Actor does not inspect point-cloud headers or calculate point density.
  • It does not clip, transform, merge, or visualize LAS/LAZ files.
  • It supports the USGS 3DEP LiDAR Point Cloud catalog, not arbitrary LiDAR providers.

Tips for efficient runs

  • Start with a small bounding box and 10 files.
  • Disable includeFileMetadata when you only need links.
  • Use date filters to avoid older overlapping acquisitions.
  • Increase maxCollections before increasing maxItems when newer collections have no files.
  • Store collectionId, fileName, and downloadUrl for change detection.
  • Check CRS fields before combining files from different projects.
  • Prefer scheduled tasks over manually recreating recurring inputs.

Legality and responsible use

The Actor accesses public USGS catalog metadata and public download links. USGS-authored data are generally public domain in the United States, but users remain responsible for checking the metadata, source acknowledgements, and any collection-specific restrictions before redistribution or commercial use.

Use reasonable run limits. Do not turn exported URLs into uncontrolled high-volume downloads. Respect Apify, USGS, network, storage, and downstream system policies. This documentation is operational guidance, not legal advice.

Troubleshooting

Inspect the input and run log first. The log reports spatial matches, date matches, skipped manifests, and failed optional metadata requests.

FAQ

Why did the run return no rows?

Confirm that the bounding box intersects the United States and is ordered correctly. Then remove date filters or increase maxCollections. A matching footprint can also have a temporarily unavailable public manifest. The run log reports spatial matches and date-filtered matches separately.

Why are file sizes null?

includeFileMetadata may be false, or the server may not have answered a HEAD request. The download link remains usable and is still returned.

Why do multiple collections cover the same location?

USGS can publish acquisitions from different years, specifications, or projects for one area. Use dates, qualityLevel, threeDepStatus, and project fields to choose the suitable collection.

Does the Actor download or store LAZ files?

No. It stores metadata and direct links only. This keeps runs fast and avoids large point-cloud transfer costs.

Can I search by polygon?

Not in the current input contract. Use the polygon's WGS84 bounding box, then apply exact geometry filtering downstream if needed.

This Actor currently has a standalone role in the Automation Lab portfolio: official USGS 3DEP point-cloud catalog discovery and file-link export. No existing Automation Lab Actor covers the same geospatial acquisition job closely enough for a useful cross-link.

For adjacent workflow steps, use Apify integrations or your own downstream Actors to download, transform, validate, or load the returned LAS/LAZ files.

Changelog

See the Actor's Changelog tab for user-visible release notes. The output contract is designed to remain stable after the initial release.