Named Entity Recognition (NER) API

What is NER?

NER is the most common technique used in production by projects that want to leverage NLP today.
It solves a very interesting challenge: extracting entities from a block of text.

Let's say you have the following sentence:

John Doe is a web developer at Google.

You would like to automatically detect that "John Doe" is a name, "web developer" is a job title, and "Google" is a company. And this is exactly what NER is going to do.

Why Use NER?

The world is full of unstructured data, especially the web. Being able to extract structured information from it can give access to a lot of valuable information. Here are a couple of examples.

Sort Customer Requests

When dealing with lots of customer requests (support, sales, ...) it definitely helps to apply NER in order to automatically sort these incoming requests. For example you could automatically extract the type of product mentioned in the request and route this to the right service accordingly.

Extract Financial Data

Extracting and consolidating financial data can be long and tedious. NER can definitely boost your productivity here by helping you extract the right data in a second.

Pre-process Resumes/Applications

HR services are sometimes having a hard time reading all these applications. It can be interesting for them to automatically highlight interesting entities like company names, skills,... in order to save time.

Extract Leads

Many B2B leads can be found on public websites or company brochures, but extracting them manually can sometimes be a pain. Thanks to NER you can automatically extract a person, with her jobtitle, and company, if they exist.

NER with spaCy

SpaCy is an excellent NLP framework that can be usefully leveraged for Named Entity Recognition. NER with spaCy is both fast and accurate. The spaCy pre-trained models can natively recognize entities like name, company, country... Entities like job titles cannot be extracted natively though. If you want to extract non-native entities like job titles, you will need to train your own model using annotation.

Annotation illustration

SpaCy offers small, medium, and large pre-trained models that can handle NER out of the box without needing to train a model by yourself. These models are available in the following languages: Chinese, Danish, Dutch, English, French, German, Greek, Italian, Japanese, Lithuanian, Norwegian Bokmål, Polish, Portuguese, Romanian, Russian, Spanish

NER Inference API

Building an inference API for NER is a necessary step as soon a you want to use NER in production. But building such an API is hard... First because you need to code the API (easy part) but also because you need to build a highly available, fast, and scalable infrastructure to serve your models behind the hood (hardest part). It is especially hard for machine learning models as they consume a lot of resources (memory, disk space, CPU, GPU...).

Such an API is interesting because it is completely decoupled from the rest of your stack (microservice architecture), so you can easily scale it independently, and you can access it using any programming language. Most machine learning frameworks are developed in Python, but it's likely that you want to access them from other languages like Javascript, Go, Ruby...


NLP Cloud proposes an NER API that gives you the opportunity to perform Named Entity Recognition out of the box, based on spaCy, with excellent performances. NER is not very resource intensive, so the response time (latency), when performing NER from the NLP Cloud API, is very good. You can either use all the large spaCy pre-trained models in all languages, or upload your own spaCy custom models!

For more details, see our documentation about NER.

Testing NER locally is one thing, but using it reliably in production is another thing. With NLP Cloud you can just do both!

As for all our NLP models, you can use NER for free, up to 3 API requests per minute.