# Is there an API to look up CAGE codes and UEIs in bulk? Yes. The official SAM.gov Entity API accepts UEI and CAGE filters but allows 10 calls a day without a role, so bulk lists need either the free extract or a third-party API. Here each CAGE or UEI lookup costs 1 credit, so a 1,000-row supplier list costs 1,000 credits, inside the Developer plan's 10,000 a month. Of the 881,370 registrations loaded here, 785,998 have a CAGE code.Checked on 2026-11-15.Official source: [DLA CAGE](https://cage.dla.mil/) | CAGE issuer | Defense Logistics Agency | | --- | --- | | Registrations with a CAGE | 785,998 | | Cost per lookup here | 1 credit | | CAGE format | 5 characters | ## The answer in detail CAGE codes come from the Defense Logistics Agency and appear in SAM.gov registrations; the DLA CAGE site has its own search but no bulk API for the public. A registration can carry more than one CAGE code, and a CAGE can belong to a firm that is not registered in SAM.gov at all, in which case no SAM.gov source will return it.Of the 881,370 registrations loaded here, 785,998 have a CAGE code. A lookup by CAGE returns the matching UEI, name, address, status, expiration date and exclusion flag. For lists, loop with a short pause; the Developer plan allows 60 requests a minute.If the list is a supplier audit, run the exclusion check in the same loop: it is a separate 1-credit call against the daily exclusions file. ## How the options compare | Option | Price | Access and limits | Coverage and history | Best for | Checked | | --- | --- | --- | --- | --- | --- | | [SAM.gov APIs (official)](https://open.gsa.gov/api/entity-api/) | Free | 10 requests a day with no SAM.gov role, 1,000 with a role or a non-federal system account; keys expire every 90 days | The live, authoritative record: entities, opportunities, exclusions, contract awards, hierarchy, subawards | Anyone who needs the official record itself, at low volume | 2026-11-12 | | [SAM.gov entity extracts (official files)](https://open.gsa.gov/api/sam-entity-extracts-api/) | Free | Monthly full file plus daily deltas; public version needs a free key to download | Every registration in the public extract; you load and query it yourself | Data teams that want to host the whole file | 2026-11-12 | | [GovCon API (govconapi.com)](https://govconapi.com/pricing) | Developer $19/mo, Pro $39/mo; 14-day trial | 1,000 requests an hour (50 a minute burst); trial 50 a day | 12,265,150 contracts and 758,552 opportunities from FY2025; 904,090 entities, monthly | Developers who want the lowest entry price and FY2025+ history | 2026-11-15 | | [samgovapi.io](https://samgovapi.io/pricing) | Free (100 credits a month, no card); Developer $49/mo, Pro $149/mo, Scale $499/mo | 20 to 180 requests a minute by plan, no daily cap; REST, MCP and keyless MCP search | 881,370 entities (1 Nov 2026 extract), 74,420 notices, 169,191 exclusions, 114,954 awards since 1 Oct 2026 | Developers and AI agents who want entities, bids and exclusions joined in one API | 2026-11-15 | ## Where samgovapi.io is the weaker choice - There is no single batch endpoint yet: a list is one call per code. - CAGE codes of firms not registered in SAM.gov are not in the extract, so they are not here either; use cage.dla.mil. ## What a 1,000-row list costs | Provider | Calls | Cost | | --- | --- | --- | | SAM.gov API, no role | 1,000 | 100 days at 10 a day | | SAM.gov API, with a role | 1,000 | One day's allowance | | samgovapi.io | 1,000 | 1,000 credits (Developer includes 10,000) | ## Try it Read a column of CAGE codes from a CSV and print each UEI and status. ``` import csv, os, time, requests key = os.environ["SAMGOVAPI_API_KEY"] for row in csv.DictReader(open("suppliers.csv")): r = requests.get(f"https://samgovapi.io/api/v1/cage/{row['cage']}", headers={"Authorization": f"Bearer {key}"}, timeout=30) e = r.json().get("data") or {} print(row["cage"], e.get("uei"), e.get("registration_status"), e.get("expiration_date")) time.sleep(1.1) ``` ## Questions Can one company have several CAGE codes?Yes. Each physical location can have its own CAGE code, so a large firm often has many.Is there a free bulk CAGE lookup?The SAM.gov extract is free and contains the CAGE of every public registration; you load and query it yourself. ## Related - [CAGE code lookup](https://samgovapi.io/cage-code-lookup) - [CAGE code API](https://samgovapi.io/cage-code-api) - [API docs](https://samgovapi.io/docs) - [Pricing](https://samgovapi.io/pricing) - [Answers](https://samgovapi.io/answers)Updated 2026-11-15. Sources checked 2026-11-15.Independent. Not affiliated with, endorsed by or sponsored by GSA, SAM.gov or any U.S. government agency. Registering in SAM.gov is free at sam.gov.

---

HTML version: https://samgovapi.io/answers/bulk-cage-code-and-uei-lookup . Markdown: https://samgovapi.io/answers/bulk-cage-code-and-uei-lookup.md

Independent. Not affiliated with, endorsed by or sponsored by GSA, SAM.gov or any U.S. government agency. Registering in SAM.gov is free at sam.gov.

Get a free API key: https://samgovapi.io/sign-up?ref=ai-claudebot
