USGS LiDAR Downloads Scraper
Pricing
from $1.16 / 1,000 item extracteds
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
Maintained by CommunityActor 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
.lasand.lazURLs 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:
- The area is a stable JSON bounding box.
- Date filtering is reproducible.
- Each file becomes a structured row.
- Runs can be scheduled and compared.
- Direct links are ready for a downloader or geospatial pipeline.
- 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
| Field | Meaning |
|---|---|
fileName | LAS/LAZ file name |
fileFormat | LAS or LAZ |
downloadUrl | Direct public USGS file URL |
fileSizeBytes | Byte size from a HEAD request, when enabled |
fileLastModified | File-server last-modified timestamp |
collectionId | USGS work-unit ID |
collectionName | USGS work-unit name |
projectId / projectName | Parent acquisition project |
acquisitionStartDate | Acquisition interval start |
acquisitionEndDate | Acquisition interval end |
publicationDate | USGS LPC publication date |
qualityLevel | 3DEP quality level, such as QL 2 |
specification | USGS LiDAR base specification |
pointCloudMethod | Acquisition method reported by USGS |
nominalResolutionMeters | Catalog resolution value |
horizontalCrs | Horizontal CRS code |
verticalCrs | Vertical CRS code |
geoid | Geoid model |
threeDepStatus | Whether the LPC meets 3DEP requirements |
threeDepStatusReason | USGS status explanation |
bounds | Collection footprint bounds in WGS84 |
collectionDownloadUrl | Public collection directory |
metadataUrl | Collection metadata directory |
sourceCatalogUrl | Official source service |
retrievedAt | Record retrieval timestamp |
USGS fields can be null for legacy collections. The dataset schema keeps those values nullable rather than inventing replacements.
Getting started
- Open the Actor input page.
- Enter a bounding box in WGS84 longitude/latitude order.
- Optionally enter
fromDateandtoDate. - Choose the maximum files and collections.
- Keep Fetch file sizes enabled when byte sizes are useful.
- Click Start.
- 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.
How much does it cost to export USGS LiDAR download links?
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 rows | Example BRONZE charge |
|---|---|
| 1 | 0.001982 USD |
| 10 | 0.01937 USD |
| 100 | 0.19325 USD |
| 1,000 | 1.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:
- Save a task with a stable project bounding box.
- Set
fromDateto the earliest relevant acquisition date. - Schedule the task weekly or monthly.
- Export
downloadUrlpluscollectionIdas a natural comparison key. - Compare the current dataset with a stored prior snapshot.
- 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
downloadUrlvalues 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
collectionIdandbounds.
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 osfrom apify_client import ApifyClientclient = 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:
- the 3DEP collection footprint service;
- 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. maxItemsstops 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
includeFileMetadatawhen you only need links. - Use date filters to avoid older overlapping acquisitions.
- Increase
maxCollectionsbefore increasingmaxItemswhen newer collections have no files. - Store
collectionId,fileName, anddownloadUrlfor 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.
Related Actors
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.