---
type: "firecrawl-provider"
description: "Building permits issued by the Montgomery County, Maryland Department of Permitting Services (DPS), from the county's open data portal data.montgomerycountymd.gov (Socrata), updated daily: residential building permits since 2000 (dataset m88u-pqki, about 187,000), commercial building permits since 2000 (i26v-w6bd, about 42,000), and fence, sign and historic area work permits. Search one dataset by site address, ZIP, community, permit type, use or work type, description text, status, issue or application date and Socrata update time (to poll for new and changed permits), newest first or by valuation; read one permit by number with every published column. Records follow the shared permits shape with address, coordinates, valuation and building area; DPS publishes no parcel, unit or contractor columns. Public Domain."
use_when: "Building permits issued by the Montgomery County, Maryland Department of Permitting Services (DPS), from the county's open data portal data.montgomerycountymd.gov (Socrata), updated daily: residential building permits since 2000 (dataset m88u-pqki, about 187,000), commercial building permits since 2000 (i26v-w6bd, about 42,000), and fence, sign and historic area work permits. Search one dataset by site address, ZIP, community, permit type, use or work type, description text, status, issue or application date and Socrata update time (to poll for new and changed permits), newest first or by valuation; read one permit by number with every published column. Records follow the shared permits shape with address, coordinates, valuation and building area; DPS publishes no parcel, unit or contractor columns. Public Domain."
categories: "Real estate"
capabilities: 2
credits_per_call: 5
---
# Montgomery County, MD Permits (data.montgomerycountymd.gov) on Firecrawl Alexandria

Building permits issued by the Montgomery County, Maryland Department of Permitting Services (DPS), from the county's open data portal data.montgomerycountymd.gov (Socrata), updated daily: residential building permits since 2000 (dataset m88u-pqki, about 187,000), commercial building permits since 2000 (i26v-w6bd, about 42,000), and fence, sign and historic area work permits. Search one dataset by site address, ZIP, community, permit type, use or work type, description text, status, issue or application date and Socrata update time (to poll for new and changed permits), newest first or by valuation; read one permit by number with every published column. Records follow the shared permits shape with address, coordinates, valuation and building area; DPS publishes no parcel, unit or contractor columns. Public Domain.

- Categories: Real estate
- Category index: [Real estate category](https://firecrawl.dev/alexandria/agents/categories/real-estate)
- Provider key: `data-montgomerycountymd-gov`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/data-montgomerycountymd-gov)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/data-montgomerycountymd-gov/openapi.json)

## Capabilities

- [Get permit](https://firecrawl.dev/alexandria/agents/providers/data-montgomerycountymd-gov/building-permits/get_permit): One Montgomery County, Maryland permit by DPS permit number, optionally with its kind (dataset). Returns the shared permit fields plus dataset, jurisdiction and raw, every column exactly as DPS publishes it with Socrata's :updated_at. Without kind the program checks residential, commercial, fence, sign and historic area work permits in that order (one small request each) and returns the first match. An unknown number is not_found.
- [Search permits](https://firecrawl.dev/alexandria/agents/providers/data-montgomerycountymd-gov/building-permits/search_permits): Search Montgomery County, Maryland permits in one DPS dataset chosen by kind: residential building permits (default), commercial building permits, fence, sign or historic area work permits. Filter by site address words, ZIP, mailing community, permit type (application type, use code, work type), work description, status (Open, Issued, Finaled, Stop Work), issue and application date windows, Socrata update time and minimum declared valuation. Newest issue first by default, or newest application, most recently added or changed, or largest valuation. Each record has the shared permit fields (number, type, use, work type, description, status, applied, issued, finaled and expiry dates, address, ZIP, coordinates, valuation, building area), kind, updated_at, source_url and licence. An empty page is a valid result.

## 1. Choose this provider when

Building permits issued by the Montgomery County, Maryland Department of Permitting Services (DPS), from the county's open data portal data.montgomerycountymd.gov (Socrata), updated daily: residential building permits since 2000 (dataset m88u-pqki, about 187,000), commercial building permits since 2000 (i26v-w6bd, about 42,000), and fence, sign and historic area work permits. Search one dataset by site address, ZIP, community, permit type, use or work type, description text, status, issue or application date and Socrata update time (to poll for new and changed permits), newest first or by valuation; read one permit by number with every published column. Records follow the shared permits shape with address, coordinates, valuation and building area; DPS publishes no parcel, unit or contractor columns. Public Domain.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "data-montgomerycountymd-gov",
  "capability": "building-permits/get_permit",
  "options": {
    "permit_number": "403621"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `kind` (string): Dataset to look in (a record's kind). Optional: without it the program asks residential, commercial, fence, sign and historic_area_work in that order, one small request each, and stops at the first that has the number. Example: `residential`
- `permit_number` (string, required): DPS permit number, digits only (1151082, 403621). Pattern: ^[0-9]{1,12}$. Example: `<permit_number>`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "data-montgomerycountymd-gov",
    capability: "building-permits/get_permit",
    options: {
      permit_number: "403621",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "data-montgomerycountymd-gov",
  "capability": "building-permits/get_permit",
  "options": {
    "permit_number": "403621"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "data-montgomerycountymd-gov",
    "capability": "building-permits/get_permit",
    "options": {
      "permit_number": "403621"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'data-montgomerycountymd-gov/building-permits/get_permit' \
  --options '{"permit_number":"403621"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "data-montgomerycountymd-gov",
  "capability": "building-permits/get_permit",
  "options": {
    "permit_number": "403621"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "data-montgomerycountymd-gov",
  "capability": "building-permits/get_permit",
  "options": {
    "permit_number": "403621"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "address": "7420 CEDAR AVE",
  "applied_date": "2005-11-14",
  "city": "TAKOMA PARK",
  "completed_date": null,
  "contractors": [],
  "dataset": {
    "id": "m88u-pqki",
    "name": "Residential Permit",
    "portal": "data.montgomerycountymd.gov",
    "updated_at": "2026-10-26T04:17:31Z",
    "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
  },
  "description": null,
  "expires_date": null,
  "housing_units": null,
  "issued_date": "2005-11-14",
  "jurisdiction": {
    "county": "Montgomery County",
    "name": "Montgomery County",
    "state": "MD"
  },
  "kind": "residential",
  "latitude": 38.980994,
  "license": {
    "attribution": "Montgomery County, MD, Department of Permitting Services",
    "name": "Public Domain",
    "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
  },
  "longitude": -77.01197,
  "observed_at_ms": 1793145170719,
  "parcel_id": null,
  "permit_class": "SINGLE FAMILY DWELLING",
  "permit_number": "403621",
  "permit_type": "BUILDING RESIDENTIAL PERMIT",
  "raw": {
    ":updated_at": "2023-05-26T17:54:42.179Z",
    "addeddate": "2005-11-14T08:11:28.000",
    "applicationtype": "BUILDING RESIDENTIAL PERMIT",
    "buildingarea": "140",
    "city": "TAKOMA PARK",
    "declaredvaluation": "2200",
    "issueddate": "2005-11-14T10:11:00.000",
    "location": {
      "human_address": "{\"address\": \"7420 CEDAR AVE\", \"city\": \"TAKOMA PARK\", \"state\": \"MD\", \"zip\": \"20912\"}",
      "latitude": "38.980994",
      "longitude": "-77.01197"
    },
    "permitno": "403621",
    "state": "MD",
    "status": "Issued",
    "stname": "CEDAR",
    "stno": "7420",
    "suffix": "AVE",
    "usecode": "SINGLE FAMILY DWELLING",
    "worktype": "RESTORE AND / OR REPAIR",
    "zip": "20912"
  },
  "source_url": "https://data.montgomerycountymd.gov/resource/m88u-pqki.json?permitno=403621",
  "square_feet": 140,
  "state": "MD",
  "status": "Issued",
  "updated_at": "2023-05-26T17:54:42.179Z",
  "valuation_usd": 2200,
  "work_class": "RESTORE AND / OR REPAIR",
  "zip": "20912"
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Get permit

- Capability: `building-permits/get_permit`
- Description: One Montgomery County, Maryland permit by DPS permit number, optionally with its kind (dataset). Returns the shared permit fields plus dataset, jurisdiction and raw, every column exactly as DPS publishes it with Socrata's :updated_at. Without kind the program checks residential, commercial, fence, sign and historic area work permits in that order (one small request each) and returns the first match. An unknown number is not_found.
- Instructions: After search_permits, or when you have a DPS permit number from a letter, a placard or another record (sign and historic area work descriptions cite related building and electrical permits). Pass kind when you know it to save requests.
- Cost: 5 credits per call
- Capability file: [Get permit](https://firecrawl.dev/alexandria/agents/providers/data-montgomerycountymd-gov/building-permits/get_permit)

Accepted options:
- `kind` (string): Dataset to look in (a record's kind). Optional: without it the program asks residential, commercial, fence, sign and historic_area_work in that order, one small request each, and stops at the first that has the number. Example: `residential`
- `permit_number` (string, required): DPS permit number, digits only (1151082, 403621). Pattern: ^[0-9]{1,12}$. Example: `<permit_number>`

Response schema example:
```json
{
  "address": "7420 CEDAR AVE",
  "applied_date": "2005-11-14",
  "city": "TAKOMA PARK",
  "completed_date": null,
  "contractors": [],
  "dataset": {
    "id": "m88u-pqki",
    "name": "Residential Permit",
    "portal": "data.montgomerycountymd.gov",
    "updated_at": "2026-10-26T04:17:31Z",
    "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
  },
  "description": null,
  "expires_date": null,
  "housing_units": null,
  "issued_date": "2005-11-14",
  "jurisdiction": {
    "county": "Montgomery County",
    "name": "Montgomery County",
    "state": "MD"
  },
  "kind": "residential",
  "latitude": 38.980994,
  "license": {
    "attribution": "Montgomery County, MD, Department of Permitting Services",
    "name": "Public Domain",
    "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
  },
  "longitude": -77.01197,
  "observed_at_ms": 1793145170719,
  "parcel_id": null,
  "permit_class": "SINGLE FAMILY DWELLING",
  "permit_number": "403621",
  "permit_type": "BUILDING RESIDENTIAL PERMIT",
  "raw": {
    ":updated_at": "2023-05-26T17:54:42.179Z",
    "addeddate": "2005-11-14T08:11:28.000",
    "applicationtype": "BUILDING RESIDENTIAL PERMIT",
    "buildingarea": "140",
    "city": "TAKOMA PARK",
    "declaredvaluation": "2200",
    "issueddate": "2005-11-14T10:11:00.000",
    "location": {
      "human_address": "{\"address\": \"7420 CEDAR AVE\", \"city\": \"TAKOMA PARK\", \"state\": \"MD\", \"zip\": \"20912\"}",
      "latitude": "38.980994",
      "longitude": "-77.01197"
    },
    "permitno": "403621",
    "state": "MD",
    "status": "Issued",
    "stname": "CEDAR",
    "stno": "7420",
    "suffix": "AVE",
    "usecode": "SINGLE FAMILY DWELLING",
    "worktype": "RESTORE AND / OR REPAIR",
    "zip": "20912"
  },
  "source_url": "https://data.montgomerycountymd.gov/resource/m88u-pqki.json?permitno=403621",
  "square_feet": 140,
  "state": "MD",
  "status": "Issued",
  "updated_at": "2023-05-26T17:54:42.179Z",
  "valuation_usd": 2200,
  "work_class": "RESTORE AND / OR REPAIR",
  "zip": "20912"
}
```

### Search permits

- Capability: `building-permits/search_permits`
- Description: Search Montgomery County, Maryland permits in one DPS dataset chosen by kind: residential building permits (default), commercial building permits, fence, sign or historic area work permits. Filter by site address words, ZIP, mailing community, permit type (application type, use code, work type), work description, status (Open, Issued, Finaled, Stop Work), issue and application date windows, Socrata update time and minimum declared valuation. Newest issue first by default, or newest application, most recently added or changed, or largest valuation. Each record has the shared permit fields (number, type, use, work type, description, status, applied, issued, finaled and expiry dates, address, ZIP, coordinates, valuation, building area), kind, updated_at, source_url and licence. An empty page is a valid result.
- Instructions: Permit history at an address, new houses, decks or pools in a ZIP or community, large commercial or multifamily projects, solar or generator work by description. To monitor for new and changed permits, pass updated_since (the largest updated_at you have seen) with sort updated_desc, once per kind. Use get_permit for one permit's full published row.
- Cost: 5 credits per call
- Capability file: [Search permits](https://firecrawl.dev/alexandria/agents/providers/data-montgomerycountymd-gov/building-permits/search_permits)

Accepted options:
- `address` (string): Site address words in order, case-insensitive, matched as a substring of '<number> <street> <suffix> <community> MD <ZIP>': 7420 Cedar Ave, 8787 Georgia Ave Silver Spring, cedar ave takoma park. Long suffixes become the abbreviations DPS uses (Avenue AVE, Road RD, Drive DR, Court CT); leave out unit numbers. Example: `<address>`
- `applied_since` (string): Only applications added on or after this day, YYYY-MM-DD. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. Example: `<applied_since>`
- `applied_until` (string): Only applications added on or before this day, YYYY-MM-DD. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. Example: `<applied_until>`
- `city` (string): Mailing community, case-insensitive substring (Bethesda, Silver Spring, Takoma Park, Germantown). Example: `<city>`
- `cursor` (string): next_cursor from the previous page; repeat the same filters with it. Pattern: ^[0-9]+$. Example: `<cursor>`
- `description` (string): Case-insensitive substring of the published work description: solar, accessory dwelling, generator, elevator. Example: `<description>`
- `issued_since` (string): Only permits issued on or after this day, YYYY-MM-DD. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. Example: `<issued_since>`
- `issued_until` (string): Only permits issued on or before this day, YYYY-MM-DD. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$. Example: `<issued_until>`
- `kind` (string): Which DPS dataset: residential (Residential Permit m88u-pqki: houses, townhouses, additions, decks, sheds, pools, alterations; default), commercial (Commercial Permits i26v-w6bd: commercial and multifamily buildings, tenant fit-outs, change of use), fence (Fence Permits 9quz-avmj), sign (Sign Permits piic-h4rw) or historic_area_work (Historic Area Work Permits bhqn-3agh: exterior work on Master Plan historic sites and districts). Example: `residential`
- `limit` (number): Rows per page. Example: `25`
- `min_valuation` (number): Only permits whose declared valuation is at least this many USD. Residential and commercial only; other kinds publish no valuation (invalid_input). Example: `10`
- `permit_type` (string): Case-insensitive substring over application type, use code and work type: single family, townhouse, deck, pool, shed, multifamily, restaurant, construct (new buildings), add, alter, demolish. Example: `<permit_type>`
- `sort` (string): issued_desc: newest issue date first, unissued applications last; applied_desc: newest application first; updated_desc: most recently added or changed first (for polling); valuation_desc: largest declared valuation first (residential and commercial). Example: `issued_desc`
- `status` (string): Case-insensitive substring of status: open (applied, not yet issued), issued, finaled, stop work. Example: `<status>`
- `updated_since` (string): YYYY-MM-DD (from 00:00 UTC) or an RFC 3339 timestamp: only rows Socrata added or changed at or after it (:updated_at, each record's updated_at). New applications and status changes such as issue or final update a row; DPS loads changes daily. Pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}([Tt ][0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]{1,9})?([Zz]|[+-][0-9]{2}:[0-9]{2}))?$. Example: `<updated_since>`
- `zip` (string): 5-digit ZIP code of the site. Pattern: ^[0-9]{5}$. Example: `<zip>`

Response schema example:
```json
{
  "count": 2,
  "dataset": {
    "id": "m88u-pqki",
    "name": "Residential Permit",
    "portal": "data.montgomerycountymd.gov",
    "updated_at": "2026-10-26T04:17:31Z",
    "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
  },
  "jurisdiction": {
    "county": "Montgomery County",
    "name": "Montgomery County",
    "state": "MD"
  },
  "license": {
    "attribution": "Montgomery County, MD, Department of Permitting Services",
    "name": "Public Domain",
    "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
  },
  "next_cursor": null,
  "observed_at_ms": 1793145165076,
  "records": [
    {
      "address": "7420 CEDAR AVE",
      "applied_date": "2005-11-14",
      "city": "TAKOMA PARK",
      "completed_date": null,
      "contractors": [],
      "description": null,
      "expires_date": null,
      "housing_units": null,
      "issued_date": "2005-11-14",
      "kind": "residential",
      "latitude": 38.980994,
      "license": {
        "attribution": "Montgomery County, MD, Department of Permitting Services",
        "name": "Public Domain",
        "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
      },
      "longitude": -77.01197,
      "parcel_id": null,
      "permit_class": "SINGLE FAMILY DWELLING",
      "permit_number": "403621",
      "permit_type": "BUILDING RESIDENTIAL PERMIT",
      "source_url": "https://data.montgomerycountymd.gov/resource/m88u-pqki.json?permitno=403621",
      "square_feet": 140,
      "state": "MD",
      "status": "Issued",
      "updated_at": "2023-05-26T17:54:42.179Z",
      "valuation_usd": 2200,
      "work_class": "RESTORE AND / OR REPAIR",
      "zip": "20912"
    },
    {
      "address": "7420 CEDAR AVE",
      "applied_date": "2026-03-10",
      "city": "TAKOMA PARK",
      "completed_date": null,
      "contractors": [],
      "description": "Re-Roof. Remove existing shingle roof down to wood decking. Install new asphalt shingle roof system",
      "expires_date": null,
      "housing_units": null,
      "issued_date": null,
      "kind": "residential",
      "latitude": 38.98112,
      "license": {
        "attribution": "Montgomery County, MD, Department of Permitting Services",
        "name": "Public Domain",
        "url": "https://data.montgomerycountymd.gov/d/m88u-pqki"
      },
      "longitude": -77.01189,
      "parcel_id": null,
      "permit_class": "SINGLE FAMILY DWELLING",
      "permit_number": "1151082",
      "permit_type": "BUILDING RESIDENTIAL PERMIT",
      "source_url": "https://data.montgomerycountymd.gov/resource/m88u-pqki.json?permitno=1151082",
      "square_feet": 2200,
      "state": "MD",
      "status": "Open",
      "updated_at": "2026-04-21T04:19:29.315Z",
      "valuation_usd": 20300,
      "work_class": "RESTORE AND / OR REPAIR",
      "zip": "20912"
    }
  ],
  "source_url": "https://data.montgomerycountymd.gov/resource/m88u-pqki.json?%24select=*%2C+%3Aupdated_at&%24where=upper%28coalesce%28stno%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28predir%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28stname%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28suffix%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28postdir%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28city%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28state%2C+%27%27%29+%7C%7C+%27+%27+%7C%7C+coalesce%28zip%3A%3Atext%2C+%27%27%29%29+like+%27%257420%25CEDAR%25AVE%25TAKOMA%25PARK%25%27&%24order=issueddate+DESC+NULL+LAST%2C+permitno&%24limit=25"
}
```
