Seattle Open Data Scraper avatar

Seattle Open Data Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Seattle Open Data Scraper

Seattle Open Data Scraper

Seattle Open Data Scraper extracts City of Seattle datasets, such as building permits, or searches the public catalog. Save clean, flat records directly as JSON, CSV, or Excel spreadsheets for easy tracking and research

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Kawsar

Kawsar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Seattle Open Data Scraper: data.seattle.gov (Socrata)

Seattle Open Data

Extract building permits, civic records, and public dataset catalogs from Seattle's open data platform into flat JSON, CSV, or Excel files.

The default setup fetches building permit details (cap of 100 rows per run). Set up automated schedules whenever you need fresh exports for reporting, tracking, or analysis.


Use Cases

  • Permit Tracking: Export building permit details—including class, type, key dates, estimated cost, and address—straight into a spreadsheet.
  • Civic Research: Collect dataset snapshots on a regular schedule to analyze changes over time.
  • Catalog Search: Search available public datasets by keyword to easily grab dataset IDs and direct links.
  • Filtered Exports: Apply custom filtering conditions when you only need records matching a specific permit class or status.
  • Newsroom & Planning Desks: Refresh target data tables before stories, meetings, or public hearings while keeping strict limits on row counts.

Extracted Data & Schema

Each extracted record includes a link back to the source record along with a timestamp marking when it was pulled.

FieldTypeDescription
permitnumstringPermit identification number
permitclassstringBroad permit classification
permitclassmappedstringMapped permit classification category
permittypemappedstringMapped permit type category
permittypedescstringSpecific permit type description
permitDescriptionstringDetailed project work description
housingunitsstringTotal housing units associated with the permit
housingunitsremovedstringHousing units removed
housingunitsaddedstringHousing units added
estprojectcoststringEstimated project valuation in USD
applieddatestringDate application was submitted
issueddatestringDate permit was officially issued
expiresdatestringDate permit expires
completeddatestringDate work/inspection was completed
statuscurrentstringCurrent processing status
originaladdress1stringStreet address
originalcitystringCity
originalstatestringState
originalzipstringZIP code
linkobjectRecord link object
latitudestringGeographic latitude coordinate
longitudestringGeographic longitude coordinate
location1objectRecord location object
daysoutcorrectionsstringDays spent awaiting corrections
numberreviewcyclesstringNumber of review cycles completed
zoningstringProperty zoning designation
dwellingunittypestringSpecific dwelling unit type
standardplanstringStandard plan indicator
dependentbuildingstringDependent building indicator
housingcategorystringHousing classification category
catalogIdstringDataset identifier from catalog searches
catalogNamestringDataset title from catalog searches
permalinkstringCatalog entry permalink
domainNamestringDataset host domain
scrapedAtstringUTC timestamp recorded at scrape time
sourceUrlstringFull web address used during extraction
errorstringError details if a row fails; empty on successful records

Sample Output

{
"permitnum": "6064208-CN",
"permitclass": "Single Family/Duplex",
"permitclassmapped": "Residential",
"permittypemapped": "Building",
"permittypedesc": "New",
"permitDescription": "Establish use as single family dwelling and construct a new single family residence with attached garage all per plan.",
"housingunits": "1.0",
"housingunitsremoved": "0.0",
"housingunitsadded": "1.0",
"estprojectcost": "380715.0000",
"applieddate": "2006-03-08T00:00:00.000",
"issueddate": "2006-08-10T00:00:00.000",
"expiresdate": "2008-02-10T00:00:00.000",
"completeddate": "2008-02-07T00:00:00.000",
"statuscurrent": "",
"originaladdress1": "",
"link": {},
"location1": {},
"scrapedAt": "2026-10-12T00:00:00+00:00",
"sourceUrl": "https://data.seattle.gov/resource/76t5-zqzr.json?$limit=50&$offset=0",
"error": ""
}

Input Options

ParameterTypeDefaultDescription
modestringrowsSelect rows to export a single dataset, or catalog to search available datasets.
datasetIdstring76t5-zqzrDataset identifier (e.g. building permits). Used in rows mode.
wherestringemptyCustom filtering condition for rows mode (e.g., permitclassmapped = 'Residential').
querystringpermitsKeyword search query used in catalog mode.
maxItemsinteger100Maximum number of records to pull (hard limit: 1000).
timeoutSecsinteger300Overall run execution timeout limit in seconds.
requestTimeoutSecsinteger30Timeout per individual network request in seconds.
proxyConfigurationobject{"useApifyProxy": false}Network configuration settings.

Sample Input Configuration

{
"mode": "rows",
"datasetId": "76t5-zqzr",
"where": "permitclassmapped = 'Residential'",
"query": "permits",
"maxItems": 100,
"timeoutSecs": 300,
"requestTimeoutSecs": 30,
"proxyConfiguration": { "useApifyProxy": false }
}

How Data Collection Works

  • Runs extract records in batches of 50.
  • Paging proceeds sequentially until all matching records are gathered or your configured maxItems threshold is hit.
  • Built-in deduplication prevents identical permit or catalog IDs from appearing twice in your output.
  • Requests automatically retry up to 3 times if temporary connection interruptions occur, using exponential backoff (2s, 4s, 8s).
  • Unhandled request errors are captured directly inside an error field on a individual record row, allowing the run to finish gracefully without crashing.

Frequently Asked Questions

How many rows can I export in a single run?

The default limit is set to 100 records per run, with a maximum limit of 1,000. If you need to pull large historical datasets, set up scheduled runs using filtered queries to break up your collection.

What happens if I enter an invalid filter or dataset ID?

Instead of crashing the entire run, the actor records an error row containing details about what went wrong and continues processing.

Why is the work description field labeled permitDescription?

The platform reserves description for internal schema handling, so we renamed the field to permitDescription to keep the dataset structure consistent and clear.

Disclaimer

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, sponsored by, or otherwise officially associated with Seattle Open Data or its owners. All data is collected from publicly available sources. Users are responsible for complying with the source's terms of use, rate limits, and attribution or licensing requirements.

This Actor only collects publicly available data from Seattle Open Data, mostly through its public API or feed, without logging in or bypassing any access controls. Scraping public data is generally legal, but how you use it matters:

  • Personal data: If the results include personal data (for example names, emails, or profile details), laws such as the GDPR in the EU and the CCPA in California may apply. Only collect and store personal data when you have a legitimate reason.
  • Copyright: Some content (articles, images, descriptions) may be protected by copyright. Do not republish full copyrighted content without permission.
  • Terms of use: Respect the source's terms, stated rate limits, and any attribution or non-commercial-use requirements listed in the Data source and licence section.
  • Legal advice: This is general information, not legal advice. If you're unsure, consult a lawyer.

To learn more, read Apify's guide: Is web scraping legal?