DEV Community

Loomwise
Loomwise

Posted on

Colorado New LLC Leads in Python: 11,500 New Companies in 3 Weeks, Pulled with the Apify Client

Colorado forms a lot of companies. From Oct 1 to Oct 23, 2026, the Secretary of State's open register on data.colorado.gov added 11,533 new business entities: 9,069 domestic LLCs, 1,206 domestic corporations, 509 out-of-state LLCs registering to do business in Colorado, and 271 nonprofits. Denver alone accounted for about 3,100 of them, followed by Colorado Springs (1,037), Aurora (623) and Fort Collins (266).

An earlier post in this series showed the raw SoQL query. This one is for people who want a clean, repeatable job in a few lines of Python: business-only rows, home addresses withheld, good-standing filter applied, written straight to CSV for a CRM import.

Setup

pip install apify-client
export APIFY_TOKEN=...   # from your Apify account settings; keep it out of your code
Enter fullscreen mode Exit fullscreen mode

The script

import csv, os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])

def colorado_new_companies(days=7, cities=None, keywords=None, limit=2000):
    run = client.actor("loomwise/colorado-new-business-filings").call(run_input={
        "formedWithinDays": days,
        "entityTypes": ["DLLC", "DPC"],     # domestic LLCs and corporations
        "cities": cities or [],
        "keywords": keywords or [],
        "goodStandingOnly": True,
        "maxResults": limit,
    })
    return list(client.dataset(run["defaultDatasetId"]).iterate_items())

rows = colorado_new_companies(days=7, cities=["Denver", "Aurora", "Lakewood"])
if rows:
    with open("colorado_new_llcs.csv", "w", newline="") as f:
        w = csv.DictWriter(f, fieldnames=sorted({k for r in rows for k in r}))
        w.writeheader()
        w.writerows(rows)
print(len(rows), "rows written")
Enter fullscreen mode Exit fullscreen mode

.call() starts the run and waits for it to finish. iterate_items() pages through the dataset for you, so there's no offset bookkeeping.

Three useful variations

One industry. Colorado doesn't publish NAICS codes, but names are a decent proxy:

roofers = colorado_new_companies(days=30, keywords=["roofing", "exteriors"])
Enter fullscreen mode Exit fullscreen mode

Out-of-state expansions. Companies already operating elsewhere and now entering Colorado are often bigger buyers. Switch entityTypes to ["FLLC", "FPC"].

Diff against last week. Keep the previous CSV and only email the new entity IDs:

import pandas as pd
new = pd.read_csv("colorado_new_llcs.csv")
old = pd.read_csv("last_week.csv")
fresh = new[~new["entityId"].isin(old["entityId"])]
Enter fullscreen mode Exit fullscreen mode

(Check the exact column names in your first CSV. They come from the tool's output schema.)

Scheduling

Run the script from cron, or create a Schedule in the Apify Console that runs the Actor every Monday, and just read the latest dataset from Python. Either way, pull 7 days at a time so each week's list stays small and fresh.

Doing it for free instead

If you don't need the cleanup, query https://data.colorado.gov/resource/4ykn-tg5h.json directly with entityformdate >= '<date>T00:00:00'. Just remember the raw data includes individual registered agents and their addresses. Drop those columns before you store anything.


The script above calls my tool, Colorado New Business Filings (paid per result). Disclosure: it's mine. The raw API in the last section is free.

Top comments (0)