Build company lists
Filter companies by industry, region, size and more with Search & Export.
search-organizations finds companies by their characteristics instead of by name. You combine filters, sort by KPIs and page through the results. To get the list as a file, you export it in the web app.
Combine filters
Filters go into the parameter filters as a JSON object. All filters apply together. If you give several values in one filter, it is enough for one of them to match.
curl -G "https://handelsregister.ai/api/v1/search-organizations" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'filters={"legal_form_code":"GmbH","city":"Gunzenhausen","active":true}' \ --data-urlencode 'limit=5'
import requests response = requests.get( "https://handelsregister.ai/api/v1/search-organizations", headers={"x-api-key": "YOUR_API_KEY"}, params={ "filters": "{\"legal_form_code\":\"GmbH\",\"city\":\"Gunzenhausen\",\"active\":true}", "limit": "5", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/search-organizations"); url.searchParams.append("filters", "{\"legal_form_code\":\"GmbH\",\"city\":\"Gunzenhausen\",\"active\":true}"); url.searchParams.append("limit", "5"); const response = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" }, }); const data = await response.json();
1{2 "results": [3 {4 "entity_id": "0100d4d86f3f26fceac3a833db59d700",5 "name": "Beyer Grundstücksverwaltungs-GmbH",6 "registration": {7 "court": "Ansbach",8 "register_type": "HRB",9 "register_number": "3635"10 },11 "address": {12 "house_number": "42",13 "street": "Nürnberger Str.",14 "postal_code": "91710",15 "city": "Gunzenhausen",16 "county": "Weißenburg-Gunzenhausen",17 "state": "Bayern",18 "country": "DEU",19 "coordinates": {20 "latitude": 49.11954,21 "longitude": 10.7591822 }23 },24 "seat": {25 "city": "Gunzenhausen"26 },27 "registration_date": "2003-04-15T00:00:00",28 "purpose": "Die Beteiligung als persönlich haftende Gesellschafterin an der Beyer Grundbesitz GmbH & Co. KG sowie die Geschäftsführung dieser Kommanditgesellschaft. Unternehmensgegenstand dieser Kommanditgesellschaft ist die Verwaltung eigenen Vermögens, insbesondere der Erwerb, die Verwaltung, die Bebauung und die Verwertung von Grundbesitz, jedoch mit Ausnahme von Tätigkeiten, die einer Genehmigung nach § 34 c GewO bedürfen.",29 "_match_context": [],30 "status_normalized": "ACTIVE"31 },32 {33 "entity_id": "0269de827eef8cae201195e4966886c3",34 "name": "Martin Bosch GmbH",35 "registration": {36 "court": "Ansbach",37 "register_type": "HRB",38 "register_number": "5034"39 },40 "address": {41 "house_number": "14 A",42 "street": "Auweg",43 "postal_code": "91710",44 "city": "Gunzenhausen",45 "county": "Weißenburg-Gunzenhausen",46 "state": "Bayern",47 "country": "DEU",48 "coordinates": {49 "latitude": 49.11129,50 "longitude": 10.7580151 }52 },53 "seat": {54 "city": "Gunzenhausen"55 },56 "registration_date": "2010-09-23T00:00:00",57 "purpose": "Gegenstand des Unternehmens ist - der Vertrieb und die Montage von Waren aller Art, insbesondere von Photovoltaikanlagen, Bauteilen nach DIN vorwiegend von Fenstern und Türen, - die Erbringung von Dienstleistungen und Vertriebsunterstützung im Bereich von Sport und Freizeitartikeln, - die Erbringung von Bauleistungen aller Art, insbesondere im Bereich Wohnbau, und zwar auch Leistungen im Sinne des § 34 c Abs. 1 Nr. 3. GewO, d.h. gewerbsmäßige Vorbereitung oder Durchführung von Bauvorhaben als Ba …",58 "_match_context": [],59 "status_normalized": "ACTIVE"60 },61 {62 "entity_id": "072223d1d792f9295175f80dded04545",63 "name": "König & Reuß Softwarelösungen GmbH",64 "registration": {65 "court": "Ansbach",66 "register_type": "HRB",67 "register_number": "5881"68 },69 "address": {70 "house_number": "6",71 "street": "Kirchenplatz",72 "postal_code": "91710",73 "city": "Gunzenhausen",74 "county": "Weißenburg-Gunzenhausen",75 "state": "Bayern",76 "country": "DEU",77 "coordinates": {78 "latitude": 49.11263,79 "longitude": 10.7553280 }81 },82 "seat": {83 "city": "Gunzenhausen"84 },85 "registration_date": "2014-07-15T00:00:00",86 "purpose": "Die Entwicklung und der Vertrieb von Software, die Organisationsberatung für EDV-Lösungen, EDV-Schulungen sowie der damit zusammenhängende An- und Verkauf von Hardware.",87 "_match_context": [],88 "status_normalized": "ACTIVE"89 },90 {91 "entity_id": "078582ddfc9526b6405289afa26b66f5",92 "name": "Wolfgang Seifert GmbH",93 "registration": {94 "court": "Ansbach",95 "register_type": "HRB",96 "register_number": "7369"97 },98 "address": {99 "house_number": "1",100 "street": "Brechhausstr.",101 "postal_code": "91710",102 "city": "Gunzenhausen",103 "county": "Weißenburg-Gunzenhausen",104 "state": "Bayern",105 "country": "DEU",106 "coordinates": {107 "latitude": 49.12887,108 "longitude": 10.7468109 }110 },111 "seat": {112 "city": "Gunzenhausen"113 },114 "registration_date": "2020-12-07T00:00:00",115 "purpose": "Die Ausführung von Isolierarbeiten sowie der Betrieb eines Getränkemarktes.",116 "_match_context": [],117 "status_normalized": "ACTIVE"118 },119 {120 "entity_id": "08764e95299e20f75f873d9497eab723",121 "name": "Zimmerei Ortner GmbH",122 "registration": {123 "court": "Ansbach",124 "register_type": "HRB",125 "register_number": "7994"126 },127 "address": {128 "house_number": "22",129 "street": "Hauptstr.",130 "postal_code": "91710",131 "city": "Gunzenhausen",132 "county": "Weißenburg-Gunzenhausen",133 "state": "Bayern",134 "country": "DEU",135 "coordinates": {136 "latitude": 49.10797,137 "longitude": 10.73341138 }139 },140 "seat": {141 "city": "Gunzenhausen"142 },143 "registration_date": "2022-12-19T00:00:00",144 "purpose": "Der Betrieb einer Zimmerei sowie die Durchführung von Dachdeckerarbeiten, Trockenbauarbeiten und Holzbauarbeiten aller Art.",145 "_match_context": [],146 "status_normalized": "ACTIVE"147 }148 ],149 "total": 239,150 "total_exact": false,151 "total_relation": "upper_bound",152 "meta": {153 "request_credit_cost": 1,154 "credits_remaining": 145155 }156}
| Characteristic | Filter |
|---|---|
| Region |
state, county, city, postal_code; radius with location_coordinates and location_max_distance_km |
| Industry |
industry_code, a five-digit code of the WZ 2025 such as 62.10.1, also as a list |
| Legal form |
legal_form_code, such as GmbH, AG or UG (haftungsbeschränkt) |
| Status |
status (ACTIVE, INSOLVENT …) or active (true, false) |
| Size |
company_size_category by balance sheet, emp_size_category by employees: micro, small, medium, large |
| KPIs |
financial_filters with ranges, such as {"emp_count": {"gte": 50}} |
| Registration |
registration_date_from, registration_date_to |
| From Pro |
owner_filters, ownership_filters, executive_filters, lifecycle_filters: shareholders, ownership structure, management, insolvency |
All filters with their values are listed under search-organizations. total is usually an upper bound of the number of results. From 10,000 results on, it is an estimate.
Sort
With sort and order you set the order, for example by revenue, employees, total assets or registration date. Companies without the value come last. The example searches for GmbHs with at least 50 employees in the district and sorts by revenue.
curl -G "https://handelsregister.ai/api/v1/search-organizations" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'filters={"county":"Weißenburg-Gunzenhausen","legal_form_code":"GmbH","status":"ACTIVE","financial_filters":{"emp_count":{"gte":50}}}' \ --data-urlencode 'sort=revenue' \ --data-urlencode 'order=desc' \ --data-urlencode 'limit=5' \ --data-urlencode 'match_context=1'
import requests response = requests.get( "https://handelsregister.ai/api/v1/search-organizations", headers={"x-api-key": "YOUR_API_KEY"}, params={ "filters": "{\"county\":\"Weißenburg-Gunzenhausen\",\"legal_form_code\":\"GmbH\",\"status\":\"ACTIVE\",\"financial_filters\":{\"emp_count\":{\"gte\":50}}}", "sort": "revenue", "order": "desc", "limit": "5", "match_context": "1", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/search-organizations"); url.searchParams.append("filters", "{\"county\":\"Weißenburg-Gunzenhausen\",\"legal_form_code\":\"GmbH\",\"status\":\"ACTIVE\",\"financial_filters\":{\"emp_count\":{\"gte\":50}}}"); url.searchParams.append("sort", "revenue"); url.searchParams.append("order", "desc"); url.searchParams.append("limit", "5"); url.searchParams.append("match_context", "1"); const response = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" }, }); const data = await response.json();
1{2 "results": [3 {4 "entity_id": "94eb910fef13f94585c48c263fa446d4",5 "name": "Hetzner Online GmbH",6 "registration": {7 "court": "Ansbach",8 "register_type": "HRB",9 "register_number": "6089"10 },11 "address": {12 "house_number": "25",13 "street": "Industriestraße",14 "postal_code": "91710",15 "city": "Gunzenhausen",16 "county": "Weißenburg-Gunzenhausen",17 "state": "Bayern",18 "country": "DEU",19 "coordinates": {20 "latitude": 49.12483,21 "longitude": 10.7805222 }23 },24 "seat": {25 "city": "Gunzenhausen"26 },27 "registration_date": "2015-07-28T00:00:00",28 "purpose": "Die Durchführung von Internet- und Netzwerkdienstleistungen, das Erstellen und Vertreiben von Software, der Handel mit Hard- und Software, der Betrieb einer Werbeagentur,darüber hinaus der Im- und Export von Waren aller Art, soweit sie keiner Einfuhr- oder Ausfuhrbeschränkung unterliegen und soweit keine Genehmigungen erforderlich sind.",29 "_match_context": {30 "financial": {31 "emp_count": 340,32 "year": 202333 },34 "legal_form": {35 "name": "Gesellschaft mit beschränkter Haftung",36 "category": "capital_company",37 "liability_type": "limited"38 }39 },40 "status_normalized": "ACTIVE"41 },42 {43 "entity_id": "e937d0eb0d9b938afaae55808a066400",44 "name": "Auto Bierschneider GmbH",45 "registration": {46 "court": "Ansbach",47 "register_type": "HRB",48 "register_number": "3953"49 },50 "address": {51 "house_number": "23",52 "street": "Dettenheimer Str.",53 "postal_code": "91781",54 "city": "Weißenburg i. Bay.",55 "county": "Weißenburg-Gunzenhausen",56 "state": "Bayern",57 "country": "DEU",58 "coordinates": {59 "latitude": 49.00163,60 "longitude": 10.9519861 }62 },63 "seat": {64 "city": "Weißenburg i. Bay."65 },66 "registration_date": "2005-03-22T00:00:00",67 "purpose": "Die Reparatur und der Handel mit Kraftfahrzeugen aller Art.",68 "_match_context": {69 "financial": {70 "emp_count": 263,71 "year": 202472 },73 "legal_form": {74 "name": "Gesellschaft mit beschränkter Haftung",75 "category": "capital_company",76 "liability_type": "limited"77 }78 },79 "status_normalized": "ACTIVE"80 },81 {82 "entity_id": "7bde1c2520a00de2e67da1237163c629",83 "name": "Hasselbacher GmbH Metallrecycling",84 "registration": {85 "court": "Ansbach",86 "register_type": "HRB",87 "register_number": "3865"88 },89 "address": {90 "house_number": "24",91 "street": "Treuchtlinger Str.",92 "postal_code": "91781",93 "city": "Weißenburg i.Bay.",94 "county": "Weißenburg-Gunzenhausen",95 "state": "Bayern",96 "country": "DEU",97 "coordinates": {98 "latitude": 49.01128,99 "longitude": 10.95407100 }101 },102 "seat": {103 "city": "Weißenburg i. Bay."104 },105 "registration_date": "2004-10-05T00:00:00",106 "purpose": "Das Metallrecycling sowie der Schrott- und Metallgroßhandel.",107 "_match_context": {108 "financial": {109 "emp_count": 50,110 "year": 2024111 },112 "legal_form": {113 "name": "Gesellschaft mit beschränkter Haftung",114 "category": "capital_company",115 "liability_type": "limited"116 }117 },118 "status_normalized": "ACTIVE"119 },120 {121 "entity_id": "3d495cff8ca2f1e8e717d8ff1317f61d",122 "name": "KTX GmbH",123 "registration": {124 "court": "Ansbach",125 "register_type": "HRB",126 "register_number": "5941"127 },128 "address": {129 "house_number": "34",130 "street": "Dettenheimer Strasse",131 "postal_code": "91781",132 "city": "Weißenburg",133 "county": "Weißenburg-Gunzenhausen",134 "state": "Bayern",135 "country": "DEU",136 "coordinates": {137 "latitude": 49.00551,138 "longitude": 10.95048139 }140 },141 "seat": {142 "city": "Weißenburg"143 },144 "registration_date": "2014-11-24T00:00:00",145 "purpose": "Die Entwicklung von technischen Problemlösungen auf dem Gebiet der Kunststoffindustrie, die Herstellung, Weiterverarbeitung und der Vertrieb von Kunststoffartikeln aller Art, insbesondere, aber nicht nur, für die Automobilindustrie.",146 "_match_context": {147 "financial": {148 "emp_count": 664,149 "year": 2024150 },151 "legal_form": {152 "name": "Gesellschaft mit beschränkter Haftung",153 "category": "capital_company",154 "liability_type": "limited"155 }156 },157 "status_normalized": "ACTIVE"158 },159 {160 "entity_id": "c95348029f78b1a5162a365a46e772a3",161 "name": "GUTMANN GmbH",162 "registration": {163 "court": "Ansbach",164 "register_type": "HRB",165 "register_number": "3621"166 },167 "address": {168 "house_number": "57",169 "street": "Nürnberger Straße",170 "postal_code": "91781",171 "city": "Weißenburg",172 "county": "Weißenburg-Gunzenhausen",173 "state": "Bayern",174 "country": "DEU",175 "coordinates": {176 "latitude": 49.04067,177 "longitude": 10.96989178 }179 },180 "seat": {181 "city": "Weißenburg i. Bay."182 },183 "registration_date": "2003-03-19T00:00:00",184 "purpose": "Die Produktion von Erzeugnissen aller Art und der Handel und Vertrieb von Produkten aller Art; insbesondere die Be- und Verarbeitung von Metall, Holz und Kunststoff.",185 "_match_context": {186 "financial": {187 "emp_count": 356,188 "year": 2024189 },190 "legal_form": {191 "name": "Gesellschaft mit beschränkter Haftung",192 "category": "capital_company",193 "liability_type": "limited"194 }195 },196 "status_normalized": "ACTIVE"197 }198 ],199 "total": 36,200 "total_exact": false,201 "total_relation": "upper_bound",202 "meta": {203 "request_credit_cost": 1,204 "credits_remaining": 145205 }206}
With match_context=1, each result shows under _match_context why it matches, for KPIs with the year of the value. This matters because the most recent statement of each company can come from a different year. The result doesn't contain the revenue itself; you fetch it with financial_kpi through fetch-organization.
Without sort, a search with q sorts by relevance. For pure filter queries, set sort when the order matters.
Page through results
limit sets how many results a page has, at most 30. skip skips results: the second page starts at skip equal to limit.
curl -G "https://handelsregister.ai/api/v1/search-organizations" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'filters={"legal_form_code":"GmbH","city":"Gunzenhausen","active":true}' \ --data-urlencode 'limit=3' \ --data-urlencode 'skip=3'
import requests response = requests.get( "https://handelsregister.ai/api/v1/search-organizations", headers={"x-api-key": "YOUR_API_KEY"}, params={ "filters": "{\"legal_form_code\":\"GmbH\",\"city\":\"Gunzenhausen\",\"active\":true}", "limit": "3", "skip": "3", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/search-organizations"); url.searchParams.append("filters", "{\"legal_form_code\":\"GmbH\",\"city\":\"Gunzenhausen\",\"active\":true}"); url.searchParams.append("limit", "3"); url.searchParams.append("skip", "3"); const response = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" }, }); const data = await response.json();
1{2 "results": [3 {4 "entity_id": "078582ddfc9526b6405289afa26b66f5",5 "name": "Wolfgang Seifert GmbH",6 "registration": {7 "court": "Ansbach",8 "register_type": "HRB",9 "register_number": "7369"10 },11 "address": {12 "house_number": "1",13 "street": "Brechhausstr.",14 "postal_code": "91710",15 "city": "Gunzenhausen",16 "county": "Weißenburg-Gunzenhausen",17 "state": "Bayern",18 "country": "DEU",19 "coordinates": {20 "latitude": 49.12887,21 "longitude": 10.746822 }23 },24 "seat": {25 "city": "Gunzenhausen"26 },27 "registration_date": "2020-12-07T00:00:00",28 "purpose": "Die Ausführung von Isolierarbeiten sowie der Betrieb eines Getränkemarktes.",29 "_match_context": [],30 "status_normalized": "ACTIVE"31 },32 {33 "entity_id": "08764e95299e20f75f873d9497eab723",34 "name": "Zimmerei Ortner GmbH",35 "registration": {36 "court": "Ansbach",37 "register_type": "HRB",38 "register_number": "7994"39 },40 "address": {41 "house_number": "22",42 "street": "Hauptstr.",43 "postal_code": "91710",44 "city": "Gunzenhausen",45 "county": "Weißenburg-Gunzenhausen",46 "state": "Bayern",47 "country": "DEU",48 "coordinates": {49 "latitude": 49.10797,50 "longitude": 10.7334151 }52 },53 "seat": {54 "city": "Gunzenhausen"55 },56 "registration_date": "2022-12-19T00:00:00",57 "purpose": "Der Betrieb einer Zimmerei sowie die Durchführung von Dachdeckerarbeiten, Trockenbauarbeiten und Holzbauarbeiten aller Art.",58 "_match_context": [],59 "status_normalized": "ACTIVE"60 },61 {62 "entity_id": "0a5cea0c9d3861d10d42f21c1d3f9816",63 "name": "TJ Gastro 3 GmbH",64 "registration": {65 "court": "Ansbach",66 "register_type": "HRB",67 "register_number": "8809"68 },69 "address": {70 "house_number": "111",71 "street": "Nürnberger Straße",72 "postal_code": "91710",73 "city": "Gunzenhausen",74 "county": "Weißenburg-Gunzenhausen",75 "state": "Bayern",76 "country": "DEU",77 "coordinates": {78 "latitude": 49.12861,79 "longitude": 10.7708280 }81 },82 "seat": {83 "city": "Gunzenhausen"84 },85 "registration_date": "2021-01-11T00:00:00",86 "purpose": "Der Betrieb von Restaurants entsprechend dem mit der McDonald´s Deutschland Inc., Zweigniederlassung München, und Herrn Dr. Konrad Exempelmann abgeschlossenen Franchise-Vertrag, dem die Gesellschaft beigetreten ist.",87 "_match_context": [],88 "status_normalized": "ACTIVE"89 }90 ],91 "total": 239,92 "total_exact": false,93 "total_relation": "upper_bound",94 "meta": {95 "request_credit_cost": 1,96 "credits_remaining": 14597 }98}
Each page costs 1 credit, even a page without results. So large pages are the cheapest per company.
A search goes up to result number 10,000. For larger sets, split it up, for example by state, postal code or registration period.
Export the list
You get a file in the web app: in Search & Export, set the filters and choose “Export”. The export returns up to 5,000 companies as CSV, XLSX or JSON.
Before it starts, you see the upper bound and the costs. The export leaves out companies without a published address; on request it includes them. You find the finished file under Account › Exports.
The export reads the results only when it runs. So changes up to that point are included. Through the API, you build the same list page by page as shown above.
Common pitfalls
- Write values exactly:
statusin upper case,registration_numberwithout “HRB”, industry codes with five digits. Unknown values return 0 results, and the page is still charged. - Filters from Pro:
owner_filtersand the other Pro filters need a Pro or Max credit subscription. Otherwise the API responds with HTTP 403, at no cost. - Register number in the search term:
qsearches names. For a register number, use the filtersregistration_authority_nameandregistration_number. - Empty q: An empty
q=returns HTTP 400. Leave outqwhen you only filter.