BoardDocs School Board Agendas Scraper by District avatar

BoardDocs School Board Agendas Scraper by District

Pricing

from $5.00 / 1,000 results

Go to Apify Store
BoardDocs School Board Agendas Scraper by District

BoardDocs School Board Agendas Scraper by District

Pulls school board agenda items from BoardDocs portals, with filters for district, committee, date range and keywords, optional item text and attachment links, charged per result.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

M Usama

M Usama

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 hours ago

Last modified

Categories

Share

What does BoardDocs School Board Agendas Scraper do?

It reads the public agendas of school boards and other public bodies that publish on BoardDocs, and returns one clean record per agenda item: district, meeting date, committee, agenda category, item number, title, action type (Action, Information, Consent and so on), and links back to the item and the meeting. Optionally it adds the item description text and the links to public attachments such as contracts and resolutions. Filters for district, committee, date window and keywords keep runs small, and pricing is per result.

Data source

The public BoardDocs portal of each district (go.boarddocs.com/<state>/<district>/Board.nsf/Public), read through the same anonymous endpoints the portal itself calls, so results are as fresh as the district's published agenda.

Why use it?

  • Sales and lead generation for vendors that sell to schools: spot contracts, RFP style items, budget lines and technology purchases as they reach the agenda.
  • Monitoring: watch a list of districts for keywords such as "curriculum", "bond", "transportation" or a competitor name, and send hits to Slack or a sheet.
  • Research and journalism: build a searchable history of what boards voted on, with direct links to the source and the attachments.
  • It replaces opening each district portal by hand and copying items out of meeting pages.

How to use it

  1. Open the Actor and enter one or more districts, for example ca/sandi.
  2. Click Start. Download results as JSON, CSV or Excel, or read them through the API.
  3. Add a Schedule and an Integration (Slack, Google Sheets, webhook) to get new records automatically.

To find a district, open its BoardDocs page. The address looks like https://go.boarddocs.com/ca/sandi/Board.nsf/Public, and the district value is the ca/sandi part. You can also paste the full address.

Input

FieldDescription
districtsBoardDocs portals to read, as state/slug or a full URL.
committeesOnly read committees whose name contains one of these words. Empty means the main governing board (the first committee listed). Use * for every committee.
dateFrom / dateToMeeting date window, YYYY-MM-DD. Empty means no bound.
keywordsKeep only items whose category, title or text contains any of these words.
maxMeetingsPerCommitteeNewest meetings to read per committee inside the date window. Default 2.
includeItemDetailsAdds item text and attachment links. Slower, because it needs extra requests per item.
maxResultsHard stop for the run. You are billed per result, so this caps the cost.
proxyConfigurationApify proxy is recommended for larger runs.

Example input:

{
"districts": ["ca/sandi", "tx/hisd"],
"keywords": ["contract", "bond"],
"dateFrom": "2024-01-01",
"maxMeetingsPerCommittee": 10,
"includeItemDetails": true,
"maxResults": 200
}

Output

Every record has the same shape:

{
"id": "ca/sandi:DA6MAR5A560C",
"district": "ca/sandi",
"meetingDate": "2024-11-12",
"committee": "Main Governing Board",
"meetingName": "Regular Meeting, 5:00 p.m.",
"category": "Report of Closed Session Actions, Administrative Assignments and Superintendent's Information Report",
"itemNumber": "2",
"title": "Administrative Assignments",
"actionType": "Information",
"hasAttachment": true,
"itemUrl": "https://go.boarddocs.com/ca/sandi/Board.nsf/goto?open&id=D3GUWY7A915B",
"meetingUrl": "https://go.boarddocs.com/ca/sandi/Board.nsf/goto?open&id=D3GUWA7A9133",
"meetingDescription": "Eugene Brucker Education Center Auditorium, 4100 Normal Street, San Diego, CA 92103 ...",
"bodyText": null,
"attachments": null,
"scrapedAt": "2026-10-18T08:55:20.537Z"
}

With includeItemDetails on, bodyText holds the item description and attachments is a list of { name, url } for the public files.

FieldMeaning
idStable key (state/slug:itemId), safe for deduplication between runs
meetingDateMeeting date, ISO YYYY-MM-DD
committeeBoard or committee the meeting belongs to
categoryAgenda section the item sits in
itemNumberPosition of the item inside its section
actionTypeAction, Information, Consent, Discussion and similar labels set by the district
itemUrl, meetingUrlLinks to the item and the meeting on BoardDocs
meetingDescriptionLocation and notes the district put on the meeting, trimmed to 500 characters
bodyText, attachmentsOnly filled when includeItemDetails is on

Pricing

Pay per event: a small fee when a run starts, then a fixed price per result returned. You only pay for records that pass your filters. Set maxResults to cap any run.

Limitations

  • Only public agendas are read. Items and files marked private by the district are not visible without a login and are not returned.
  • The Actor reads agendas, not minutes documents or policy manuals. Minutes appear only when a district attaches them to an agenda item.
  • There is no district directory: you supply the state/slug values. Some districts disable the public portal, and those return no records.
  • Very large attachment lists make includeItemDetails runs slower.

FAQ

Is this legal? The Actor reads agendas the sites publish for any visitor without a login and stores only business information published for that purpose. You are responsible for how you use the data.

Something is missing or broken? Open an issue in the Issues tab; response time is usually under a day.