← Back to Blog

The Market Research You Were Quoted $4,000 For Is Sitting in a Public Repo

· 29 min read The Market Research You Were Quoted $4,000 For Is Sitting in a Public Repo

A storage operator I know was quoted $4,200 for a market study. Twenty pages, a competitor map, some demographics, a recommendation he had already made himself. The firm that quoted him was not ripping him off exactly. That is roughly what a market study costs when a human assembles it by hand.

The part that stings is that almost every number in that study comes from a public file. Not a leaked one. Not a grey-market one. A file that a federal agency or a mapping consortium publishes on purpose, updates on a schedule, and serves to anyone who asks, with no key, no signup, and no per-record charge.

The gap between "this data is public" and "I can actually use this data" is where the $4,200 lives. That gap has gotten a lot smaller in the last two years, and most small businesses have not noticed.

So I went and checked. Not from memory, and not from a list somebody else wrote. I ran 46 candidate open-source projects through live verification on 22 August 2026: fetch the repository, read the license, call the endpoint, download a sample, count what actually came back. Twenty-six held up. Twelve of them are worth a small business owner's afternoon, and this post is what each one does and what you would actually type.

What "usable" has to mean

A lot of "free data" lists are worthless because they count things that are free in theory. My bar was narrower, and every item below cleared all of it:

No key, or a key that costs nothing and gates nothing: if you have to email a sales team, it does not count.

Real scale: the thing has to be big enough to answer a question you would otherwise pay for.

Works the day you try it: I called the endpoint or pulled the file myself. Several well-known projects failed here, which is the whole reason for checking.

Still maintained: something committed in the last year, or a dataset that is complete and stable enough that maintenance is beside the point.

A license you can actually build on: this one eliminated more candidates than anything else, and I will come back to it.

Twelve worked examples

Each of these is framed as a business, a question, and the specific thing to run. I have kept the numbers exactly as they came back so you can tell whether it is worth your time before you spend any.

1. The HVAC contractor who wants to know every competitor in the county

Source: Overture Maps, via the overturemaps-py command line tool.

Overture is a mapping consortium backed by Meta, Microsoft, Amazon, and TomTom. Its Places layer is a business point-of-interest dataset with about 74 million records, republished monthly, sitting in open cloud storage that you can read anonymously.

One command, no account:

uvx overturemaps download --bbox=-116.30,43.55,-116.14,43.68 -f geojson --type=place -o downtown.geojson

That box is a slice of Boise. It came back in about a second with 2,624 businesses. Inside a 1.3 square kilometre sample: 156 restaurants, 119 financial services firms, 116 law offices, 103 real estate offices. Each record carries name, street address, postal code, category, and coordinates. Phone number was filled on 91% of records, website on 89%, a social profile on 50%, and an email address on 37%.

What it replaces: a SafeGraph or Data Axle license, or the $500 "local competitor list" line item on a marketing proposal. Because Overture assigns every place a stable ID, you can pull the same box next month and diff it. New IDs are businesses that opened. Missing IDs are businesses that closed. That is an opening and closing feed for your trade area, built from two files and a script.

The catch: you query by bounding box, not by name. "Every business in my county" is easy. "Every location of one chain nationwide" is not. And quality is uneven by design, with an operating status field filled on only 74% of records, so some of what you get closed a while ago.

2. The mortgage broker who wants to know what rate competitors are actually closing at

Source: the CFPB's HMDA platform.

Every mortgage lender above a size threshold has to report every loan application, and the CFPB publishes it at the record level. The API needs no key at all. A filtered aggregation came back in 108 milliseconds. A nationwide query returned 392,056 originations totalling $180.9 billion for 2024.

The part nobody expects is the CSV export. It returns the full 99-column loan schema: interest rate, rate spread, total loan costs, discount points, origination charges, loan-to-value, debt-to-income, property value, applicant income, census tract, and the lender's legal entity identifier. An unfiltered statewide pull came down as a 32 megabyte file with no authentication and no rate limiting.

What to do with it: run the filers endpoint for your state and year, and you get every competing lender by name with their origination counts. Rank yourself. Then chart the same list from 2018 through 2025 and watch share move. Then go to the record level and compute the actual distribution of rates, points, and fees your competitors are closing at, by census tract. Not their rate sheet. Their closed loans.

What it replaces: CoreLogic and Optimal Blue sell derivatives of this exact public file for four and five figures a year.

The catch: it is annual and it lags. The authoritative snapshot for a year lands around May of the following year, so this is planning data, not a live signal. And it is worth precisely nothing if you are not in mortgages, housing, lending, or real estate.

3. The commercial cleaner who wants to sell to government

Source: USAspending, the Treasury's own award database.

This is the strongest thing on the list. The API requires no authorization at all, and the documentation says so outright. A recipient query returned 18,298,469 entities with their unique identifiers. Bulk archives are keyless too, and the full contracts file for fiscal 2025 is about 1.98 gigabytes.

What to do with it: search awards by your industry code crossed with your state or county. You get the size of the market, and you get the names of the firms already winning it. Those firms are your subcontracting pitch list, and they are far easier to sell to than the government is. Then look up any of them by name and read their entire federal revenue history. Then filter for contracts whose period of performance ends in the next nine months, because those are the recompetes, and the incumbent is beatable exactly once every few years.

What it replaces: GovWin and Bloomberg Government charge thousands per seat for a nicer interface on top of this.

The catch: award search starts at October 2007. Earlier years exist but only through bulk files. And one gotcha that will waste your afternoon: the bulk download endpoints only accept POST. A normal browser request returns a method error that reads exactly like a dead endpoint.

4. Anyone about to sign with a vendor, franchisor, or landlord

Source: CourtListener, from the Free Law Project.

This has the broadest use of anything here, because every business signs contracts with somebody. CourtListener holds federal court dockets and state case law, and it gives you three ways in: a free web interface, an anonymous REST API, and bulk files in open cloud storage that you pull with no account at all.

The court list returned 3,359 courts. A docket search for "roofing" returned 86,634 matches with no authentication. The bulk docket file confirmed at 5.01 gigabytes.

What to do with it: before you sign a franchise agreement, a commercial lease, a big supply contract, or an acquisition, run the counterparty's legal name. You are looking for volume and pattern. A dozen wage-and-hour suits tells you something. Three contract disputes with former suppliers tells you something else. Recent bankruptcy filings in their industry tell you a lot. You can also read your state's controlling precedent on non-competes, contractor classification, and website accessibility suits, which are the three areas where small businesses most often assume something that is not true where they live.

What it replaces: PACER charges ten cents a page for the same federal records. Lex Machina and the big legal research seats run thousands.

The catch, and it matters for diligence: the federal docket archive is crowd-sourced from people who paid for those pages, so it is large but genuinely incomplete. If you do not find a case, that is not proof there is no case. The free API is also throttled to lookup speed rather than research speed, so anything at volume has to go through the bulk files instead.

5. The supplement brand vetting a contract manufacturer

Source: openFDA.

The FDA runs a public API with no key at 240 requests per minute and 1,000 a day. A free key raises the daily ceiling to 120,000. There is no paid tier, because there is no product to sell you.

Verified counts: 175,814 device clearance records, 137,198 drug product listings, and 333,804 registered facilities with addresses. Bulk downloads are open, covering about 30 datasets, including roughly 46 million adverse event reports across drugs and devices.

What to do with it: before you sign with a contract manufacturer, pull their recall history from the food and device enforcement endpoints. Then set the same query to run monthly against your competitors, because a competitor recall is the single best moment to be visible in your category. If you make a medical device, the clearance endpoint gives you every competitor filing with the applicant, decision date, and what they claimed as their predicate device. And that registered facility list, 333,804 addresses, is a supplier prospect list nobody sells you.

The catch: FDA-regulated products only. If you run a plumbing company this is worth nothing. The code repository itself is an internal data pipeline, so the value is in the hosted API, not in cloning anything.

6. The credit union benchmarking its own complaint rate

Source: the CFPB consumer complaint database.

No key. The API returned 17,266,452 complaints with the most recent record one day old, and it aggregates by company, product, issue, state, response type, and timeliness. The bulk file is a 1.42 gigabyte archive refreshed daily.

What to do with it: pull complaint counts for every named competitor in your state, normalized by product and issue, and see where you actually sit. Then use the response fields as a vendor screen. The ratio of "closed with monetary relief" to "closed with explanation," plus the timely response percentage, tells you how a servicer or lender behaves when something goes wrong, which is the only thing you actually want to know about them.

This one is closing, so treat it as urgent. The CFPB announced on 14 August 2026 that it is ending discretionary publication of complaint narratives. The code change removing narratives, trends, and geographic data merged on 18 August and is partly live already: the geographic endpoint returns nothing and the trends endpoint no longer serves data. As of 22 August the narrative text was still being served, with 3.84 million complaints carrying written text, but the field is gone from the official documentation. If you want the written complaints, download the file this week. The structured database itself will survive, because Dodd-Frank requires it by statute.

7. The product brand writing listing copy

Source: the Amazon Reviews 2023 research dataset from UCSD.

571.54 million reviews, 54.51 million users, 48.19 million products, from May 1996 to September 2023, across 33 categories. Free, no account, mirrored publicly. One category file is a manageable download on its own: the beauty category reviews run about 326 megabytes.

Each review carries rating, title, full text, product identifier, user identifier, timestamp, helpful votes, and whether the purchase was verified.

What to do with it: pull your category and build a complaint taxonomy before you launch, not after. Sort one-star reviews by helpful votes and you have the failure modes buyers care enough about to warn each other over. Then do the opposite: pull five-star reviews and extract the exact phrases people use to describe what they liked, and write your listing and ad copy in those words instead of yours. Rating distributions by competitor give you a quality benchmark that is not self-reported.

What it replaces: Helium 10 and Jungle Scout run $50 to $400 a month and neither hands you the raw text.

The catch, and this one surprised me: the metadata is much thinner than the documentation implies. On a 400-record sample, price was filled on 21% of records, description on 22%, and the category array was empty on all 400. Treat the schema as a list of fields that may exist, not fields that do. The dataset is also frozen at September 2023, so it is useless for current pricing and excellent for durable language patterns. And the data itself carries no stated license, which is a genuine open question if you plan to build a product on it.

8. The B2B software company that wants unfiltered objections

Source: the Hacker News search API.

Free, no key, no signup, and the whole corpus back to February 2007 is reachable. A time-filtered query returned 22,459 stories from before 2008, and a fresh query returned posts from minutes earlier.

What to do with it: search a competitor's name filtered to comments and read years of unedited opinion from people who actually switched, including why. Search the phrase pattern "what do you pay for" plus your category, because asking about pricing is a recurring genre there and the answers are specific. Every competitor's launch thread comes with its objection thread attached. And the monthly hiring threads are fully indexed and searchable by technology or city, which is free firmographic data if you sell to engineering teams.

The catch: there is a hard 1,000-result ceiling per query, so whole-corpus extraction means slicing by date manually. The public code repository was archived read-only in February 2026 and is no longer what serves the live API, so you cannot self-host it or inspect what answers you. Treat it as a useful free utility rather than something to depend on, and cache anything that matters. It is also one narrow technical audience, so if you run a dental practice this is not for you.

9. The buyer pricing a small acquisition

Source: edgartools, a Python library over the SEC's own free endpoints.

No API key. The SEC asks you to identify yourself in a header, which is policy rather than a signup. I installed it clean and ran real queries: a recent annual report parsed into a 47 by 19 income statement with segment splits, 18,664 event filings enumerated for a single quarter, and a large investor's holdings returned as an 89-row table.

The one that matters for buyers is full-text search. Searching the phrase "self storage facility acquisition" returned 10,000 ranked results with company, identifier, ticker, form type, and the specific event item codes.

What to do with it: public companies have to disclose completed acquisitions, and the filing often contains the price and the terms. If you are buying a small business in a category where any public company is also buying, you have a comparables file that nobody sells to individual buyers. Executive compensation disclosures give you salary benchmarks for roles you are about to hire. And segment reporting inside annual filings is often the cleanest market sizing you will find for a niche.

The catch: this covers SEC registrants only. It is excellent for public competitors and acquirers and useless for the private company across town. It is also effectively a one-maintainer project whose author sells a commercial hosted product built on the same engine, so treat the library as the durable part and the surrounding services as optional.

10. The services firm that sells to nonprofits

Source: the IRS 990 electronic filing data, via the Nonprofit Open Data Collective.

Nonprofits above a size threshold file electronically, and those filings become public structured data. The interesting table is contractor payments: for 2023 it runs over 275,000 rows of nonprofit, named vendor, description of service, and dollars paid.

What to do with it: that is a list of organizations that have already paid an outside firm for something, what they paid for, and how much. If you do IT, accounting, facilities, marketing, or legal work, filter for your service description and your state, and you have a prospect list where every entry has a demonstrated budget and a named incumbent you are displacing. That is a materially better list than anything built on company size alone.

The catch, and it will cost you two years if you miss it: the package is deprecated in favour of a successor from the same group, and the documentation still links the stale data catalog. Go to the current one. The successor package also has no clear license attached, which matters if you are building something you sell.

11. The exporter looking at UK or European public contracts

Source: the Open Contracting data registry.

134 published datasets across 72 countries, downloadable with no account. The UK Contracts Finder file runs about 396 megabytes and contains 591,410 tenders, 436,880 awards, and 1,148,012 organizations.

I opened one to confirm the records are real and complete. A representative entry: a power supply design contract, buyer Transport for London, tendered at £146,414.35, awarded at £133,103.95 to a named engineering firm.

What to do with it: the difference between the tender estimate and the final award is a discount rate you can compute across hundreds of contracts in your category, which tells you where to price a bid. The winning supplier field names your incumbent competitor on every single contract. And contract end dates give you a renewal calendar.

The catch, and it is a big one for American readers: there is exactly one United States publisher in the entire registry, a single city, with data stopping in March 2026. The US does not publish in this format, so use USAspending for domestic work and treat this purely as export market research. There is also no record-level search. You filter datasets, download whole files, and process them locally. About a third of the registry is frozen archive rather than live.

12. The business researching the French market

Source: the French government's own company registry search API.

Free, no key, no signup, seven requests a second. A trade and postal code query returned results immediately, and there is a radius search endpoint that takes a latitude, longitude, and distance.

Each company record carries the national identifier, legal name, count of open versus total establishments, address with coordinates, industry code, legal form, creation and closure dates, named officers, a headcount band, and filed financials by year.

What to do with it: query by industry code and postal code to enumerate every registered competitor in a trade area, with founding date, size, named decision-makers, and filed numbers. The radius endpoint gives you true trade-area analysis. The open-versus-total establishment counts, read alongside closure dates, give you churn and expansion signals per competitor.

The catch: France only, and the documentation is in French. It is also a search interface rather than a bulk export, and the total result count saturates at 10,000, so a query reporting exactly 10,000 is showing you a ceiling and not a count. Read it as a ceiling or you will badly misjudge a market.

The working code is usually sitting in a fork nobody looks at

Here is a pattern worth knowing, because it applies to every project on this list and almost nobody uses it.

Take Arctic Shift, which is the main open archive of historical Reddit data. Reddit killed cheap access to its own history a few years ago, and this project rebuilt it: bulk dumps covering 2005 through the present, plus a free search interface and a public API. It has about 1,400 stars and 85 forks.

The maintainer keeps the repository deliberately minimal. When a consultancy submitted a substantial addition last month, he closed it with a one-line explanation that the repository is meant to hold a very simple starter script and nothing complicated. That is a defensible call for a maintainer. It also means the useful, specific, already-written code lives somewhere else.

It lives in the forks. And the forks look empty, which is why nobody checks. Of those 85, seventy-one are untouched copies with no original work in them at all. Only fourteen have any changes on their main branch. That ratio is why people glance at a fork list and move on.

The remaining handful are worth real money to a small business, because each one is somebody who already solved a problem shaped like yours.

A brand mention tracker, already written

Chen-Yifeng/arctic_shift is the only fork that is currently ahead of the original without being behind it: eight commits, dated 17 August 2026. It was built to track discussion of AI models, and if you read the code, what it actually is is a share-of-voice tracker with the brand names filled in.

The core is a dictionary mapping each brand to its aliases:

MODELS = {
    "chatgpt":  ["chatgpt", "chat gpt", "gpt-4", "gpt4", "gpt-5", "openai"],
    "claude":   ["claude", "anthropic"],
    "gemini":   ["gemini", "deepmind"],
    ...
}

Replace those six entries with your own business and your five nearest competitors, each with its misspellings and nicknames, and you have a competitive mention tracker over nineteen years of public discussion. Point the subreddit filter at the communities where your customers actually talk, set a date window, and run it.

What comes back is one row per mention, carrying the subreddit, author, timestamp, score, comment count, the full text, and a reconstructed link straight back to the original thread. It ends by printing a tally per brand.

Three things make it more useful than it first looks. It handles posts and comments in the same pass, so you are not running two jobs. It records every brand that matched on a given row rather than just the first, which means you can ask which competitors get discussed together and in what context, and that co-mention pattern is usually a better map of how buyers actually group the market than any positioning exercise. And because every row keeps its link, the output doubles as a work queue: these are real threads where somebody discussed your category, and most of them are still open.

Two practical notes. The comments and documentation are in Chinese, so run them through a translator or just read the code, which is plain enough. And it processes files you have already downloaded rather than calling a live service, so you need the monthly dump files first.

A database loader, rejected upstream

CASM-Consulting/arctic_shift holds the single most valuable piece of work in the whole fork network, and you will not find it by looking at the fork the normal way. It sits on a side branch called m52_ingest, not on the main branch, so every default comparison reports that fork as having zero changes. I made exactly that mistake on my first pass.

CASM Technology is a British social media analysis firm. What they added is a proper Python package with a Postgres writer: an async connection pool, batched inserts with a configurable batch size, and a JSONB column so you keep the full record without designing a schema first. It is the piece that turns a pile of compressed archive files into something a database can answer questions about.

The detail that makes it practical is field filtering. Their ingest script keeps nineteen fields on posts and thirteen on comments, and throws the rest away. That is the difference between an archive that does not fit on your machine and a table that does.

Why this matters to a small business: once the data is in Postgres, every ordinary business tool works. You can point a spreadsheet at it. You can point a dashboard at it. You can point an AI assistant at it and ask questions in plain English. The gap between "there is a free archive of this" and "I can use this" is almost always a loading step, and somebody already wrote this one.

Two bugs to fix before you run it, both of which I found reading the code rather than by being clever. It imports a module called asyncore, which was removed from Python entirely in version 3.12, so it will not start on a current install. Delete that import, because nothing uses it. And the folder-processing function calls the file-processing function without awaiting it, which means folder mode silently processes nothing and reports success. Run it one file at a time, or add the missing await.

An export for the person who does not read JSON

mutantx22/arctic_shift-htmlconvert converts archive records into browsable HTML pages with clickable links back to the original threads and human-readable timestamps instead of Unix seconds.

This sounds trivial and it is not. The moment you want to show findings to a business partner, a franchisee, or a lawyer, the format matters more than the analysis. This is the difference between sending someone a file they will not open and sending them a page they will read.

One caution: it writes post text straight into the page without escaping it first. Reddit text can contain markup, so if you publish the output anywhere other than your own machine, clean it first.

Turning discussion into a map of where demand is

KochevaIvona/arctic_shift_reddit_implementation is a research pipeline that extracts location mentions from posts and geocodes them into coordinates, with a cache so repeat lookups do not cost anything.

The business version of that idea: if people in your category are describing problems and naming where they are, you can plot them. For a franchise deciding a next territory, or a service business deciding where a second van makes sense, demand density derived from what people actually said is a genuinely different input than population data.

Fix before running: it reads the geocoding key into one variable name and then uses a different one in the request, so it stops on the first call. Rename it and it works. It also expects a location-extraction step to have run first, which is the harder half of the job and is not really solved in that repository.

The one that keeps your copy from disappearing

899ms/arctic_shift adds a single scheduled job, and it is the most broadly applicable thing in the fork list because it has nothing to do with Reddit.

It syncs a fork from its upstream weekly, and it refuses to sync in two specific situations. If the upstream repository is deleted, the fetch fails and it skips safely, leaving your copy intact. If the upstream is emptied out, which it detects by watching for a sudden collapse in file count, it stops, opens an issue to alert you, and does not pull the deletion into your copy. Before any normal merge, it tags a rollback point.

Why a small business should care: every free thing in this article is maintained by somebody who owes you nothing. Projects get archived, rewritten, relicensed, or taken down. If you build a process on one, fork it and put a guarded sync like this on it. Then an upstream disappearing is an email to you rather than a broken process.

How to look for these yourself

The method is simple and takes ten minutes per project.

Ignore star counts on forks, because they are almost always zero and mean nothing here. Instead, compare each fork against the original and look at how many commits it is ahead. Anything at zero is a copy. Anything ahead is somebody's actual work, and the commit messages usually tell you what problem they were solving.

The mistake to avoid: compare every branch, not just the default one. The most valuable fork in this entire network reported zero changes until I looked past its main branch. People experiment on side branches, and rejected pull requests live on side branches by definition. A rejected pull request is often the most useful thing in a fork network, because it is finished work that somebody wanted merged and a maintainer turned down on scope rather than on quality.

The three that are genuinely better than what people pay for

If you only look at three, look at these, and for a specific reason in each case.

USAspending is the only one that clears every bar without an asterisk. Keyless production API, keyless bulk archives, active development, and a public domain dedication that puts no conditions on you at all.

CourtListener is the only one that gives you both access modes at once. A web interface and anonymous API for one-off lookups, and open bulk storage for anything at scale. It also has the widest applicability, because counterparty screening is not an industry, it is just due diligence.

Overture Places wins on the thing nobody checks: licensing. It is published under a permissive data license, and the Places layer deliberately excludes OpenStreetMap data specifically so that share-alike obligations do not attach. If you plan to build a product on top of a dataset and sell it, that distinction is the whole ball game.

Read the license before you build anything

This is where most "free data" advice quietly fails people, so here it is plainly.

Several genuinely excellent projects have data licensed for non-commercial use only. The sanctions and screening dataset I looked at is a good example: the bulk file is free and keyless and holds nearly four million entities, and for-profit screening still requires a paid license. Free to download is not the same as free to use in your business.

The opposite trap also exists, and Arctic Shift is the example. Neither it nor its companion interface carries a license file at all, which under default copyright means all rights reserved. It is a well-run, actively maintained, genuinely useful project with well over a thousand stars, and it still gives you nothing in writing. Popularity is not permission. Meanwhile three of the government sources above are dedicated to the public domain outright, which is a stronger position than most paid vendors will give you in a contract.

The short version: government sources tend to have the cleanest terms, academic datasets tend to have the murkiest, and "it is on GitHub" tells you nothing about either.

Actually running this without becoming a data engineer

None of this requires you to learn Spark. The realistic pattern for a small business is:

Pull one file for your industry from one of the sources above. Put it somewhere your AI assistant can read it. Ask questions in plain English. A modern assistant will happily work through a hundred thousand rows of federal contract awards or nonprofit vendor payments and answer "who are the five firms winning the most work in my category in my state, and when do their contracts end."

That is the entire workflow, and it runs on the same subscription you are probably already paying for. If you want the connection to be permanent rather than a one-off upload, that is what MCP servers are for, and I wrote a tour of MCP servers by industry covering how those connections get made. For the broader picture of what a small operation can automate for well under a hundred dollars a month, the $50-a-month AI stack post is the one to read next.

If you want to check your own visibility before you go looking at competitors, the Competitor Gap Matrix and Competitor Contrast tools on this site do that side of it, free and with no signup, same as everything else here.

For the full argument on replacing an agency retainer with tools you run yourself, that is what The $20 Dollar Agency is about. This post is one chapter of that thesis with the receipts attached.

What I did not include, and why

Two of the most popular repositories in this category are browser-driven collectors that pull business listings and app store data directly from platforms that prohibit it in their terms of service. They work well and they are actively maintained. I left them out because recommending that a small business build a process on a terms violation is bad advice, however common the practice is. Everything above is either an official public API, a published bulk dataset, or a library that calls one.

I also verified 26 sources and wrote up 12. The remaining 14 were real and working but narrower, or missing one structural piece such as any dataset of their own. And I capped verification at 26 out of 46 candidates to keep the exercise finite, so there are 20 more that were never checked. This is a starting map, not a complete one.

Fact-check notes and sources

All figures below were pulled live on 22 August 2026 and will drift.

USAspending API requires no authorization: stated in the official API documentation at api.usaspending.gov. Recipient count of 18,298,469 and the fiscal 2025 contracts archive size were returned by the live endpoints. Source repository: fedspendingtransparency/usaspending-api, CC0 licensed.

HMDA record-level access: the CFPB data browser API at ffiec.cfpb.gov served the 99-column loan schema and the nationwide 2024 figures of 392,056 originations totalling $180.9 billion. Source repository: cfpb/hmda-platform, CC0 licensed.

CFPB complaint database and the narrative removal: complaint total of 17,266,452 and the 1.42 gigabyte bulk archive were confirmed live at consumerfinance.gov. The removal of narratives, trends, and geographic data is tracked in pull request 256 of cfpb/ccdb5-api, merged 18 August 2026. The statutory basis for the database surviving is the Dodd-Frank Act.

CourtListener access and coverage: court count, search results, and bulk file size confirmed at courtlistener.com. Free tier rate limits are published by the Free Law Project. Source repository: freelawproject/courtlistener, AGPL code with public domain data. PACER's ten cents per page is the published federal fee.

Overture Maps Places: dataset scale, monthly release cadence, and the licensing position excluding OpenStreetMap data from the Places layer are documented at overturemaps.org. Field fill rates quoted are from a single sampled extract and are not global figures. Tool: OvertureMaps/overturemaps-py, MIT licensed.

openFDA limits and counts: the 240 per minute and 1,000 per day keyless limits are published at open.fda.gov. Record counts for device clearances, drug listings, and registered facilities were returned live. Source repository: FDA/openfda, CC0 licensed.

Amazon Reviews 2023: dataset totals are stated by the McAuley Lab at UCSD at amazon-reviews-2023.github.io. The metadata fill rates of 21% for price and 22% for description are from a 400-record sample I took and should be treated as indicative. Repository: hyp1231/AmazonReviews2023, MIT code with no stated data license.

Hacker News search: the 1,000-result ceiling is returned by the API itself as an explicit error. The repository algolia/hn-search was archived read-only in February 2026.

SEC filing access: data.sec.gov and the EDGAR archives were confirmed to respond without a key. Library: dgunning/edgartools, MIT licensed.

IRS 990 electronic filing data: contractor table row counts are from the National Center for Charitable Statistics files referenced by Nonprofit-Open-Data-Collective/irs990efile. The deprecation notice is in that repository's own README.

Open Contracting registry: publication count, country count, and the UK Contracts Finder totals are from data.open-contracting.org. The single United States publisher was confirmed by reading the full dataset listing. Tooling: open-contracting/kingfisher-collect, BSD licensed with CC BY data.

French company registry: endpoint behaviour, the seven per second limit, and the 10,000 result ceiling were confirmed live at recherche-entreprises.api.gouv.fr. Source: annuaire-entreprises-data-gouv-fr/search-api, MIT licensed.

Non-commercial licensing example: OpenSanctions publishes its bulk data under a Creative Commons non-commercial license and states that for-profit screening requires a paid data license, at opensanctions.org/licensing.

Arctic Shift and its fork network: the project is at ArthurHeitmann/arctic_shift, with the search interface at arctic-shift.photon-reddit.com. Neither it nor arctic_shift_ui carries a license file. Fork counts, per-fork commit comparisons, and branch listings were pulled from the GitHub API on 22 August 2026: 85 forks, 71 with no original commits, 14 with changes on their default branch, and 3 more carrying work only on a side branch. The maintainer's stated reason for declining the database contribution is in the comment thread on pull request 61 of that repository.

The individual forks described: brand tracking code is in Chen-Yifeng/arctic_shift at scripts/collect_ai_models.py, 8 commits ahead of the original as of 17 August 2026. The Postgres loader is in CASM-Consulting/arctic_shift on the m52_ingest branch. The HTML converter is mutantx22/arctic_shift-htmlconvert. The geocoding pipeline is KochevaIvona/arctic_shift_reddit_implementation. The guarded sync job is at .github/workflows/safe-fork-sync.yml in 899ms/arctic_shift. The two defects noted in the CASM ingest script, the removed asyncore import and the un-awaited call in folder mode, and the mismatched key variable in the geocoding script, were found by reading the source rather than reported by their authors. Python removed asyncore in version 3.12, documented in the Python 3.12 release notes.

Related reading

The $50-a-Month AI Stack: what a small operation can actually automate for under a hundred dollars a month, which is the stack you would run all of the above through.

The Best MCP Servers By Industry: how to wire a data source into an AI assistant permanently instead of uploading files by hand every time.

Before You Hire an AI Agency: a 30-minute self-audit to run before you pay anyone a retainer.

Competitive Social Media Analysis: the same do-it-yourself approach applied to competitor social strategy.

Verifying an Auditor's Findings Without Trusting the Tool: how to check a vendor's report against the underlying data yourself.

This post is informational, not legal, financial, or investment advice. Mentions of third-party products, datasets, and companies are nominative fair use. No affiliation is implied. Dataset licensing terms change, and it is on you to read the license that applies on the day you download the file.

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026