Skip to main content

Normalize Company API

Written by Kadri - RichAPI Support Team

POST /normalize_company • Credits: 0.5 credits per call

Normalize Company cleans one raw company name. Send a POST request with the name. The response holds the normalized name, the list of legal suffixes that the endpoint removed, and two flags that report what changed. Each call costs 0.5 credits, which is $0.01.

What does Normalize Company do?

A CRM holds the same account under many spellings. Acme, Inc., ACME Inc and Acme Incorporated are three records for one company. Normalize Company reduces each spelling to the same root name, so a match key works. The endpoint strips 64 legal and structural suffixes. The endpoint also removes trailing punctuation and emojis. For an all-uppercase name or an all-lowercase name, the endpoint fixes the casing. RichAPI runs the logic inside the API. Normalize Company calls no external data provider.

Which endpoint does Normalize Company use?

  • Method: POST

  • URL: https://api.richapi.ai/api/v1/normalize_company

  • Authentication: x-api-key header

  • Response: Synchronous JSON

  • Credits: 0.5 credits per call

How to send a Normalize Company request

  1. Copy your API key from the RichAPI dashboard.

  2. Set the company_name parameter to the raw company name.

  3. To keep the original casing, set normalize_case to false.

  4. Send a POST request to https://api.richapi.ai/api/v1/normalize_company.

  5. Send the API key in the x-api-key header.

  6. Read the normalized_name field from the response.

cURL

curl -X POST https://api.richapi.ai/api/v1/normalize_company   
-H "x-api-key: YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{"company_name": "ACME TECHNOLOGIES, INC.", "normalize_case": true}'

Python

import requests

response = requests.post(
"https://api.richapi.ai/api/v1/normalize_company",
headers={"x-api-key": "YOUR_API_KEY"},
json={"company_name": "ACME TECHNOLOGIES, INC.", "normalize_case": True},
timeout=60,
)
response.raise_for_status()
print(response.json())

Node.js

const response = await fetch("https://api.richapi.ai/api/v1/normalize_company", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
company_name: "ACME TECHNOLOGIES, INC.",
normalize_case: true,
}),
});

const data = await response.json();
console.log(data);

Which parameters does Normalize Company accept?

Parameter

Type

Required

Default

Description

company_name

string

Yes

none

The raw company name to clean. The maximum length is 500 characters.

normalize_case

boolean

No

true

Converts an all-uppercase or an all-lowercase name to title case. If the value is false, Normalize Company keeps the original casing.

CAUTION: Do not send a company_name longer than 500 characters. The API returns 400 and charges no credit.

What does Normalize Company return?

The following block is an example response for the request body above.

{
"original_name": "ACME TECHNOLOGIES, INC.",
"normalized_name": "Acme Technologies",
"removed_suffixes": ["Inc."],
"case_normalized": true,
"changes_applied": true
}

What does each Normalize Company response field mean?

Field

Type

Description

original_name

string

The company name that you sent, after leading and trailing whitespace was trimmed.

normalized_name

string

The cleaned company name.

removed_suffixes

array of strings

Every suffix that Normalize Company removed, in removal order. The endpoint reports the canonical spelling, for example Inc., and not the spelling in your input.

case_normalized

boolean

The value is true after a casing rewrite. The value is false for a name that kept its original casing.

changes_applied

boolean

The value is true for a normalized_name that differs from original_name.

What does Normalize Company return for common company names?

Each row is a real result from the endpoint with the default normalize_case value of true.

company_name you send

normalized_name

removed_suffixes

case_normalized

Acme, Inc.

Acme

["Inc."]

false

ACME Inc

Acme

["Inc"]

true

Acme Incorporated

Acme

["Incorporated"]

false

ACME TECHNOLOGIES, INC.

Acme Technologies

["Inc."]

true

Northwind Data Ltd.

Northwind Data

["Ltd."]

false

Siemens AG

Siemens

["AG"]

false

Bosch GmbH

Bosch

["GmbH"]

false

Nestle S.A.

Nestle

["S.A."]

false

Barclays PLC

Barclays

["PLC"]

false

Spotify AB

Spotify

["AB"]

false

Rakuten KK

Rakuten

["KK"]

false

Grupo Modelo Sociedad Anonima

Grupo Modelo

["Sociedad Anonima"]

false

Toyota Motor Corporation

Toyota Motor

["Corporation"]

false

Atlassian Pty Ltd

Atlassian Pty

["Ltd"]

false

Acme Holdings Group Ltd

Acme Holdings

["Ltd", "Group"]

false

ACME SOLUTIONS LLC

Acme Solutions

["LLC"]

true

acme ai solutions

Acme AI

["Solutions"]

true

Acme Industries

Acme Industries

[]

false

Air France-KLM

Air France-KLM

[]

false

Which suffixes does Normalize Company remove?

Normalize Company matches 64 suffixes. The match ignores case. The endpoint repeats the pass up to 10 times, so it removes a stack of suffixes such as Group Ltd.

Group

Suffixes

Long legal forms

Limited Liability Company, Limited Liability Partnership, Gesellschaft mit beschrankter Haftung, Sociedad Anonima, Sociedad de Responsabilidad Limitada, Societe a Responsabilite Limitee

English words

Incorporated, Corporation, Limited, Company

Abbreviations with periods

L.L.C., L.L.P., L.P., P.L.C., S.A.R.L., Inc., Corp., Ltd., Co., S.A., A.G., S.R.L., N.V., B.V., S.E.

Abbreviations without periods

LLC, LLP, PLC, SARL, GmbH, Inc, Corp, Ltd, Co, AG, AB, AS, KK, YK, GK, SA, SRL, NV, BV, SE, OY, LP, SPA

Descriptive words

International, Worldwide, Enterprises, Industries, Technologies, Solutions, Services, Holdings, Consulting, Consultants, Associates, Partners, Global, Systems, Group, Tech

A suffix matches only after a comma and a space, a single space, or a hyphen. Acme-LLC and Acme, LLC both normalize to Acme.

Which suffixes stay in the name?

The 16 descriptive words in the last row are identity suffixes. When removal leaves a single word, Normalize Company keeps the identity suffix. Acme Industries stays Acme Industries, because Acme alone is one word. Acme Global Industries becomes Acme Global, because two words remain.

Pty, Pty., OYJ, ASA, S.p.A., S.A.S. and KG are not in the list. Normalize Company keeps each of them.

How does Normalize Company handle punctuation, casing and whitespace?

Rule

Behavior

Example

Trailing punctuation

Removes every trailing comma, period, hyphen and space after the suffix pass.

Acme, Inc. gives Acme

Inner punctuation

Keeps every comma, period, hyphen, ampersand and apostrophe inside the name.

Air France-KLM gives Air France-KLM

Outer whitespace

Trims leading and trailing whitespace before any other step.

Acme, Inc. gives Acme

Inner whitespace

Keeps repeated spaces inside the name. Use the /remove_whitespace endpoint to collapse them.

Acme Widgets Inc gives Acme Widgets

Casing

Rewrites the casing of an all-uppercase name or an all-lowercase name only. A mixed-case name keeps its casing.

acme inc gives Acme. Northwind Data Ltd. gives Northwind Data

Acronyms

Restores 34 known acronyms during a casing rewrite: AI, API, AWS, BMW, CRM, ERP, IBM, SAP, USA, UK, UAE, EU, IPO, CEO, CFO, CTO, COO, VP, HR, IT, PR, SEO, UX, UI, IO, DB, ML, AR, VR, IoT, SaaS, PaaS, IaaS, AT&T.

saas metrics group gives SaaS Metrics

Small words

Lowercases 18 small words after the first word during a casing rewrite: a, an, and, as, at, but, by, for, from, in, of, on, or, the, to, with, via, per.

THE BANK OF THE WEST gives The Bank of the West

Ampersand and apostrophe

Capitalizes each part around an & or an ' during a casing rewrite.

mcdonald's corporation gives Mcdonald'S

Emojis

Removes emojis and pictographs after the suffix pass. A trailing emoji blocks suffix removal.

Nestle S.A. 🇨🇭 gives Nestle S.A.

How do I deduplicate a CRM list with Normalize Company?

One account often sits in a CRM three times. The example below sends the three spellings and groups the records by the result.

import requests

records = ["Acme, Inc.", "ACME Inc", "Acme Incorporated"]
groups = {}

for raw_name in records:
response = requests.post(
"https://api.richapi.ai/api/v1/normalize_company",
headers={"x-api-key": "YOUR_API_KEY"},
json={"company_name": raw_name},
timeout=60,
)
response.raise_for_status()
key = response.json()["normalized_name"].lower()
groups.setdefault(key, []).append(raw_name)

print(groups)

The three calls return the following results.

CRM record

normalized_name

removed_suffixes

Match key

Acme, Inc.

Acme

["Inc."]

acme

ACME Inc

Acme

["Inc"]

acme

Acme Incorporated

Acme

["Incorporated"]

acme

The script prints {'acme': ['Acme, Inc.', 'ACME Inc', 'Acme Incorporated']}. All three records share one match key, so you can merge them into one account.

Lowercase the normalized_name value before you compare two names. Normalize Company keeps the original casing of a mixed-case name, so AcMe and Acme differ without that step. The three calls above cost 1.5 credits in total, which is $0.03.

How much does Normalize Company cost?

Normalize Company costs 0.5 credits per call. At $0.02 a credit, the rate on the 1,000 and 5,000 credit packs, one call costs $0.01. Larger packs cost less per credit. RichAPI charges a credit only for a 2xx response. A 400, 403 or 429 response costs no credit.

Calls

Credits

Cost

1

0.5

$0.01

100

50

$1.00

1,000

500

$10.00

10,000

5,000

$100.00

50,000

25,000

$500.00

Which errors can Normalize Company return?

Status

Meaning

What to do

400

The request body failed validation. The error field names the problem, for example company_name is required or company_name exceeds maximum length of 500 characters.

Correct the parameter that the message names, then send the request again.

401

The API key is missing, wrong or revoked.

Send a valid key in the x-api-key header.

403

This API key has no access to this endpoint (Endpoint not available on your plan).

Call GET /api/v1/my-endpoints to see the endpoints that this key can use. Contact support for access.

405

The request used a method other than POST.

Send the request with the POST method.

429

The request rate is over the limit.

Wait for the seconds in the Retry-After header, then send the request again.

500

The API failed.

Send the request again. If the failure repeats, contact support.

Every error response holds an error field with a plain-text message.

Frequently asked questions

Does Normalize Company remove Pty from an Australian company name?

No. Pty is not in the suffix list of Normalize Company. Atlassian Pty Ltd returns Atlassian Pty, because the endpoint removes only Ltd.

Why does Normalize Company keep Industries in Acme Industries?

Industries is an identity suffix. When removal leaves a single word, Normalize Company keeps the identity suffix, because one word is rarely the real company name. Acme Global Industries returns Acme Global, because two words remain.

Why is case_normalized false for Northwind Data Ltd.?

Normalize Company rewrites the casing of an all-uppercase name or an all-lowercase name only. Northwind Data is mixed case, so the endpoint keeps that casing and returns case_normalized: false. NORTHWIND DATA LTD. returns Northwind Data with case_normalized: true.

Does Normalize Company collapse double spaces inside a name?

No. Normalize Company trims leading and trailing whitespace only. Acme Widgets Inc returns Acme Widgets. To collapse repeated spaces inside a string, send the string to the /remove_whitespace endpoint.

How many company names can one Normalize Company call cover?

One. Each call cleans one company_name value and costs 0.5 credits. To clean a list, send one call per name.

Does a failed Normalize Company call cost a credit?

No. RichAPI charges a credit only for a 2xx response. A 400 response for an empty or oversized company_name costs no credit.

Does Normalize Company verify that the company exists?

No. Normalize Company applies text rules to the string that you send. It reads no company database. To confirm a company and get firmographic data, send an Company Enrichment request.

Related articles

Did this answer your question?