Minnesota DNR Timber Sales
Pricing
from $5.00 / 1,000 timber sale records
Minnesota DNR Timber Sales
Minnesota state timber auction calendar (date, type, status, location, notice/results link) plus the DNR archive of sealed-bid tabulation records and notice-of-sale PDFs, as clean structured records.
Pricing
from $5.00 / 1,000 timber sale records
Rating
0.0
(0)
Developer
Matthew Curtis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Structured feed of Minnesota state timber auctions from the Minnesota Department of Natural Resources (DNR) Division of Forestry. One run gives you every auction on the public Timber Sales Calendar and, optionally, the Timber Auction Archive: the sealed-bid auction tabulation records (which tracts sold, to whom, at what price) and three years of archived notice-of-sale PDFs.
The DNR sells roughly 800,000 cords of timber a year through about 70 area and regional auctions. Loggers, mills, timber brokers, appraisers and forestry consultants track the calendar to know when notices are posted (about 30 days before each sale), when tracts become visible, and when results are published. This Actor turns the web pages into clean records so you can diff them, feed a spreadsheet, or trigger alerts when a notice goes Final or a sale goes Completed.
What it collects
Calendar records (recordType: "calendar"), one per scheduled auction:
| Field | Example | Notes |
|---|---|---|
id | calendar:2026-12-01:tower-area-regular | Stable across runs |
saleDate | 2026-12-01 | ISO date |
dayOfWeek | Tue | |
auctionType | Regular / Intermediate | Intermediate = reserved for purchasers with 30 or fewer employees |
status | In Development / Final / Completed | DNR notice-of-sale status |
saleName | Tower Area Regular | As printed |
area | Tower Area | Sale name without the type words |
saleMethod | Oral / Sealed Bid | |
time | 9:00 AM | |
location | Cook Community Center | Or the bid-award note for sealed bids |
detailUrl | link or null | Notice-of-sale / results page, present once the status is Final or Completed |
sourceUrl, scrapedAt |
Document records (recordType: "document"), one per archive PDF, when Include archive documents is on:
| Field | Example |
|---|---|
id | document:notice-of-sale:20260910-little-falls-regular |
documentType | Sealed Bid Tabulation Record or Notice of Sale |
title | 09/10/2026 Little Falls Regular |
documentDate | 2026-09-10 |
year | 2026 |
saleName | Little Falls Regular |
auctionType | Regular, Intermediate, Special (decorative materials, salvage, Camp Ripley) or All (one document covering both Regular and Intermediate tracts) |
saleMethod | Oral / Sealed Bid |
url | absolute PDF link on files.dnr.state.mn.us or webapps.dnr.state.mn.us |
fileName | 20260910 Little Falls Regular.pdf |
A SUMMARY record in the key-value store reports rows found and kept, the filters applied, failed requests, and links to the DNR Qualified Purchasers List and Notice of Unsold Timber Sales PDFs (updated nightly by DNR).
Input
| Input | Default | What it does |
|---|---|---|
includeCalendar | true | Collect the auction calendar (currently about 70 auctions, roughly 2 months ahead plus the last 30 days). |
includeDocuments | false | Also collect the Timber Auction Archive documents. |
documentTypes | both | Sealed Bid Tabulation Record and/or Notice of Sale. |
documentYears | 2 | Keep only documents from the most recent N calendar years; 0 = whole archive (about 850 documents back to 2016). |
dateFrom / dateTo | empty | ISO day bounds applied to saleDate and documentDate. |
auctionTypes | all | Any of Regular, Intermediate, Special. Combined (All) documents always pass this filter. |
statuses | all | Calendar statuses to keep, e.g. ["Final", "Completed"] to get only auctions with a posted notice or results. |
maxItems | 200 | Hard cap on records (calendar first, then documents). |
Sample output record
{"recordType": "calendar","id": "calendar:2027-01-05:gna-sealed-bid-regular","saleDate": "2027-01-05","dayOfWeek": "Tue","auctionType": "Regular","status": "In Development","saleName": "GNA Sealed Bid Regular","area": "GNA","saleMethod": "Sealed Bid","time": "4:30 PM","location": "Bid Awarding at the Two Harbors Area Office at 2:00 PM on January 6th","detailUrl": null,"sourceUrl": "https://webapps.dnr.state.mn.us/timber_sales_calendar/","scrapedAt": "2026-10-24T18:50:06.105Z"}
Pricing
Pay per event, using Apify's built-in events:
- Actor start – $0.02 per run (one event per GB of memory, minimum one). The Actor needs only 256 MB.
- Timber sale record – $0.005 per record in the dataset (calendar row or archive document).
A default run (calendar only, about 70 records) costs about $0.37 plus Apify platform usage. A full archive pull (includeDocuments: true, documentYears: 0, maxItems: 1000) is about $4.60. There is no charge for records filtered out by your input.
Limitations
- DNR keeps auction results on the calendar for 30 days after each sale; older oral-auction results are not available online. Sealed-bid results stay in the archive as PDFs.
- Per-tract details (species, volume, appraised and bid prices, purchaser) live inside the linked notice-of-sale and tabulation PDFs. This Actor gives you the links and metadata; it does not parse the PDFs.
- The calendar shows about two months of upcoming auctions, so between seasons it can be short. Nothing is fabricated when the page is empty: a missing table fails the run with a clear message so you notice layout changes.
- Public data only. No login, no CAPTCHA, no personal data: purchaser names appear only inside DNR's own PDFs, which are linked, not scraped.
Get alerted when records change
Pair this Actor with Dataset Diff & Alert Monitor to receive only the new, changed or removed records in Slack, Discord, Telegram or a webhook. Schedule the monitor, not this Actor: it runs this Actor for you, compares runs by id, and a run that finds nothing costs only the comparison. Status changes (a notice posted, results final) arrive as changed rows. The sister Actor for Washington is wa-dnr-timber-sales.
{"sourceActorId": "mdcurt/mn-dnr-timber-sales","sourceInput": {"includeCalendar": true,"includeDocuments": false},"keyFields": ["id"],"notifyOn": ["added","changed"],"labelField": "saleName","urlField": "detailUrl","slackWebhookUrl": "https://hooks.slack.com/services/…"}
Changelog
- 1.0.0 (2026-10-24) – Initial release: calendar + archive index, filters, SUMMARY record, stable ids.