Socrata Open Data Search: Datasets and Rows | $1/1K avatar

Socrata Open Data Search: Datasets and Rows | $1/1K

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Socrata Open Data Search: Datasets and Rows | $1/1K

Socrata Open Data Search: Datasets and Rows | $1/1K

$1 per 1,000 results, platform usage included. Search any Socrata open data portal for datasets, or read the rows of one dataset with filters (SoQL). City, county, state and agency portals worldwide. No key needed at low volume. Not limited to permits.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

One Dollar Store

One Dollar Store

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Socrata Open Data Search: Find Datasets and Read Rows on Any Portal

$1 per 1,000 results. Platform usage included. No rental, no minimum.

Open it in Apify Console

New to Apify? [Create a free account](https://www.apify.com?fpr=ymnoit) (referral link). Runs from a free plan account return the first 10 results; any paid plan returns everything you ask for, up to your limit.

What it costs

ResultsPrice
1,000$1.00
10,000$10.00
100,000$100.00

Plus $0.001 per run. One flat price, platform usage included, so there is no separate compute or proxy bill. A result is one dataset when you search the catalog, or one row when you read a dataset. A daily run that reads the 500 newest rows of a dataset costs $0.501, about $15.03 for 30 days.

What it does

Socrata is the software behind the open data portals of many cities, counties, states and agencies, such as data.cityofchicago.org and data.ny.gov. This actor does two jobs on any of them:

  1. Find datasets. Search by words, optionally on one portal, and get one row per dataset with its name, description, columns, category, tags, dates, views and links.
  2. Read rows. Give a portal domain and a dataset ID, add optional filters, and get the dataset's rows.

It is not tied to one subject. If you only want issued building permits from US city portals in one common layout, use the Building Permits Scraper from this store instead. This actor does not repeat it: it reads any dataset in the portal's own columns.

Why use it

  • Any Socrata portal. One input works for a city, a county, a state or a federal agency portal.
  • Find first, then read. The dataset rows list every column with its field name and type, so you can write the filter for the second run without leaving Apify.
  • Real filters. Rows can be filtered, trimmed to chosen columns, ordered and grouped with Socrata's own query language (SoQL), so a count by category is one run.
  • No key at low volume. The public APIs work without a token. If a portal throttles you, paste your own free app token in the optional field.
  • Safe with domains. Only public https portal addresses are read, never private or local ones.

Quick start

  1. Open the actor, enter a portal domain such as data.cityofchicago.org and search words such as building permits, press Start. You get a list of datasets.
  2. Copy a datasetId from the results, put it in Dataset ID, press Start again. You get that dataset's rows.
  3. Download the results as JSON, CSV or Excel, or read them through the API.
{ "domain": "data.cityofchicago.org", "searchQuery": "building permits", "maxItems": 20 }

Use it from code

curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~socrata-open-data-search/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "data.cityofchicago.org", "datasetId": "ydr8-5enu", "where": "issue_date > '"'"'2026-09-01'"'"'", "maxItems": 100}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/socrata-open-data-search").call(
run_input={
"domain": "data.cityofchicago.org",
"datasetId": "ydr8-5enu",
"where": "issue_date > '2026-09-01'",
"maxItems": 100,
}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row.get("issue_date"), row.get("permit_type"), row.get("street_name"))

Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

https://mcp.apify.com?tools=one_dollar_store/socrata-open-data-search

Then ask, for example: "Search data.cityofchicago.org for datasets about food inspections, then read the 50 newest rows of the best match."

Switching from another Socrata actor

Most Socrata actors take a portal domain, a dataset ID and a SoQL query. Here they are domain, datasetId, and the SoQL parts where, select, group and order. Dataset search takes searchQuery. Rows come back with the portal's own column names, as the SODA API sends them.

Input

FieldTypeDefaultWhat it does
domaintextnonePortal domain such as data.cityofchicago.org. Optional for dataset search, required for rows. A pasted dataset page address also works and fills in the dataset ID.
datasetIdtextnoneFill it to read rows. Four characters, a dash, four characters, for example ydr8-5enu. Empty means dataset search.
searchQuerytextnoneSearch words for dataset names, descriptions and column names.
assetTypetextdatasetdataset, all, map, chart, file, href (external link) or story.
category, tagstext, listnonePortal category (as the portal spells it) and tags (all must match).
sortBytextrelevancerelevance, page_views_total, page_views_last_month, updatedAt, createdAt or name.
regiontextusus or eu: which Socrata catalog lists the portal.
wheretextnoneRows only: a SoQL condition, for example issue_date > '2026-09-01'.
selecttextall columnsRows only: comma separated columns, or functions such as count(*) with group.
group, ordertextnoneRows only: SoQL group and order, for example issue_date DESC.
rowSearchTexttextnoneRows only: keeps rows where any text column contains these words.
appTokentextnoneOptional. Your own free Socrata app token, for portals that throttle anonymous requests.
maxItemsnumber100Total results for the run. Minimum 10, maximum 10,000.

Output fields

Searching for datasets gives one row per dataset:

FieldMeaning
datasetId, name, description, domainThe dataset ID, its name, the publisher's description and the portal that hosts it.
assetType, category, tagsKind of item (dataset, map, chart, file, href, story), the portal's category and the publisher's tags.
attribution, attributionLink, license, ownerNameWho the portal credits, a link, the license text when there is one, and the portal account that owns the dataset.
createdAt, updatedAt, dataUpdatedAt, metadataUpdatedAtWhen the dataset was created, last changed, last had its data refreshed and last had its description edited.
pageViewsTotal, pageViewsLastMonth, downloadCountView and download counts kept by the portal.
columnCount, columnsNumber of columns and the first 300 of them, each with name, fieldName (use it in filters), type and description.
customMetadataExtra fields the publisher filled in, such as update frequency or data owner.
portalUrl, apiEndpointThe dataset page and its API address.
scrapedAtWhen the actor read the record.

Fields a dataset does not have are left out.

Reading rows gives one row per record, with the columns of that dataset exactly as the portal names them. Values are as the portal sends them: numbers come as text ("200000"), dates as 2026-10-18T00:00:00.000, and location columns as a small object with type and coordinates. Columns whose names start with a colon (system and computed region columns) are left out.

Sample results

Real results from test runs on 20 October 2026, with long text shortened and some fields left out.

A dataset found by search (the column list cut to two entries):

{
"datasetId": "ydr8-5enu",
"name": "Building Permits",
"domain": "data.cityofchicago.org",
"assetType": "dataset",
"category": "Buildings",
"tags": [
"buildings",
"permits"
],
"attribution": "City of Chicago",
"updatedAt": "2026-10-19T12:27:02.000Z",
"pageViewsTotal": 5696855,
"downloadCount": 170120,
"columnCount": 122,
"columns": [
{
"name": "PERMIT_TYPE",
"fieldName": "permit_type",
"type": "Text",
"description": "Type of permit"
},
{
"name": "ISSUE_DATE",
"fieldName": "issue_date",
"type": "Calendar date",
"description": "For most permit types, date when City determined permit was ready to issue, subject to payment of permit fees; For Express Permit Program, date when permit issued based on full payment of applicable permit fee"
}
],
"portalUrl": "https://data.cityofchicago.org/d/ydr8-5enu",
"apiEndpoint": "https://data.cityofchicago.org/resource/ydr8-5enu.json"
}

Rows of the Chicago building permits dataset, filtered to cost above 100,000 and issued after 1 September, newest first:

[
{
"permit_": "101085337",
"permit_type": "PERMIT - RENOVATION/ALTERATION",
"issue_date": "2026-10-18T00:00:00.000",
"work_description": "SPR 2019 CBCERECT REAR 2 STORY FRAME ADDITION, INTERIOR REHABILITATION AND NEW REAR OPEN W ...",
"reported_cost": "200000",
"street_name": "BERENICE AVE"
},
{
"permit_": "101078696",
"permit_type": "PERMIT - RENOVATION/ALTERATION",
"issue_date": "2026-10-16T00:00:00.000",
"work_description": "DDS 2019 CBRC: INTERIOR TENANT IMPROVEMENT TO EXISTING ONE STORY BUILDING FOR \"TESLA, INC. ...",
"reported_cost": "2490632",
"street_name": "LOOMIS ST"
}
]

The same dataset grouped by permit type, the first three groups after the largest one (select is permit_type, count(*) as permits, group is permit_type):

[
{
"permit_type": "PERMIT - EASY PERMIT PROCESS",
"permits": "207651"
},
{
"permit_type": "PERMIT - RENOVATION/ALTERATION",
"permits": "168099"
},
{
"permit_type": "PERMIT - SIGNS",
"permits": "55257"
}
]

Limits

  • Up to 10,000 results per run. That is the cap for dataset search and for reading rows. To read more of a big dataset, split it with where, for example by date range, and run once per range.
  • Big reads take minutes. Results are saved one at a time. A test read of 2,500 rows of a 122 column dataset took about five minutes, so 10,000 wide rows can take most of the default time limit of one hour. Narrow reads with select are faster. If a run reaches the limit it stops cleanly and keeps what it has; raise Timeout under Run options for more.
  • Rows come as the portal sends them. There is no renaming, no type conversion and no joining of datasets. Numbers and dates arrive as text, as above.
  • The dataset must be a table. Maps, charts, files, external links and stories show up in dataset search with assetType set to all or their own type, but only tables have rows. A private or removed dataset returns no rows and a note in the run log.
  • Column names must be exact. Filters use the fieldName of a column, lower case with underscores. A filter the portal cannot parse ends the run with no rows and the portal's own message in the log.
  • Throttling. Portals limit anonymous requests. The actor retries a throttled or failed request up to three times and honours the portal's wait time. If a run still reports throttling, paste your own free app token from the portal's developer settings into the optional field.
  • Order while paging. Rows are read in pages of up to 1,000 and ordered by the portal's row ID so no row is read twice. A few datasets cannot be ordered that way. For those the actor pages without a fixed order and says so in the log, and rows added during a long run may be missed or repeated. Use order to set your own.
  • Wide datasets. If a page of rows is too large for one answer, the actor reads fewer rows per request. Use select to take fewer columns if it still fails.
  • Counts are the portal's. Views, downloads and update times are what the portal reports and can lag.
  • Public portals only. The domain must be a public https portal name. IP addresses, local names and portals that need a login are refused.
  • Search is Socrata's. Which datasets match, and their order for relevance, are decided by the Socrata catalog. A portal missing from the catalog still works for rows when you give its domain and dataset ID.

FAQ

How much does it cost to read 10,000 rows? $10, plus $0.001 for each run. Searching 10,000 datasets costs the same.

Do I pay for compute or proxy on top? No. Platform usage is included in the $1 per 1,000 price. The portals' public APIs are read directly, so no proxy is used.

Where does the data come from? Dataset search reads the public Socrata catalog (Discovery API). Rows come from the SODA API of the portal you name. No key and no login are needed.

How do I find a dataset ID? Run a search first and copy datasetId from a result. Or open the dataset page on the portal: the ID is the last part of the address, such as ydr8-5enu. You can also paste the full page address into the Portal domain field and the actor takes the domain and ID from it.

How do I get only new rows? Use where with a date column, for example issue_date > '2026-09-01', and order set to issue_date DESC. Put the date of your last run in the filter.

How do I count rows by category? Set select to category, count(*) as total and group to category, using a real column name. Each group is one result.

Can I search across all portals? Yes. Leave the domain empty and give search words. Each result shows which portal it comes from.

Which portals work? Any portal that runs Socrata, including most US city, county and state portals and many federal agencies. Portals hosted in Europe are in the EU catalog: set Catalog region to eu.

Is it legal? The actor reads public data only, with no login. Open data portals publish under their own terms and licenses. Follow the terms of each portal and the law where you live, and check the license of a dataset before you reuse it.

Is this an official Socrata product? No. It is an independent tool and is not affiliated with or endorsed by Socrata, Tyler Technologies or any portal owner.

Do I need an Apify account? Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can sign up here. This is a referral link and it costs you nothing.

Is there a limit on the free plan? Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

Open data and statistics

Changelog

  • October 2026: first release.