NAV
shell python

Overview

Proxycurl is a distributed crawling service that helps to circumvent most (if not all) rate-limiting techniques employed by complex websites.

Authentication

Proxycurl's API uses bearer tokens to authenticate users. Each user is assigned a randomly generated secret key under the API section in the dashboard.

The bearer token is injected in the Authorization header

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/v2/linkedin?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fwilliamhgates
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/v2/linkedin'
linkedin_profile_url = 'https://www.linkedin.com/in/williamhgates'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}

response = requests.get(api_endpoint,
                        params={'url': linkedin_profile_url},
                        headers=header_dic)

Rate limit

You can make up to 300 requests to our API every minute. The window for the rate limit is 5 minutes. You can burst up to 1500 requests every 5 minutes.

An error 429 is returned when you are rate limited. You can also get an error 429 if we are limited by the capacity on our end.

You should handle 429 errors and apply exponential backoff.

Credits

Each valid request requires at least 1 credit to be processed.

A credit is consumed if and only if the request is parsed successfully.

A successful request is a request that returns with either a 200 or 404 HTTP status code.

404 status code is considered a successful request because we scrape the profile and found that it is missing.

Timeouts and average request duration

The endpoints in our Linkedin crawler takes an average of 10 seconds to complete.

The duration is a result of at least 4 hops in real-time; from your client, to the coordinating server, to the crawl worker, to Linkedin website.

You are encouraged to make concurrent requests to our API service to maximise throughput.

Do note that the value of 10 seconds is the average duration, and the variance is large because workers with poor latency might take longer to respond to the crawl request.

We recommend a timeout of at least 60 seconds.

Success rate of API

Every request made to Proxycurl API triggers a real-time scrape of a profile. There exists a low chance of failure. In production, you must handle network and request errors because they are to be expected. That said, we maintain an SLA on the success rate of at least 95%.

In production, the success rate leans closer to 99%.

Errors

These are the common errors that could be returned by our API:

HTTP Code Description
400 Invalid paramters provided. Refer to the documentation and message body for more info
401 Invalid API Key
403 You have run out of credit
404 The requested resource (e.g: user profile, company) could not be found
429 Rate limited. Please retry
500 There is an error with our API. Please Contact us for assistance
503 Scrape failed, please retry.

You will NOT be charged if a request returns with an error.

Explain it to me like I'm 5

Enrichment API

What you have What you get after enrichment Which API Endpoint to use?
Linkedin (Person) Profile URL Profile data with profile picture, job history, etc. Person Profile Endpoint
Linkedin (Company) Profile URL Profile data with profile picture, office locations, etc Company Profile Endpoint
Linkedin (Company) Profile URL List of open job position Job Listing Endpoint
Linkedin (Company) Profile URL Detailed job data Job Profile Endpoint
First name and Company domain Linkedin (Person) Profile URL General Resolution Endpoint
Company name or company domain Linkedin (Company) Profile URL Company General Resolution Endpoint
Linkedin (Company) Profile URL Number of employees in a company Employee Listing Count Endpoint
Linkedin (Company) Profile URL List of employees Employee Listing Endpoint
Email Address Disposable Email Check Disposable email Endpoint
URL HTML Page Scrape Endpoint

Contact API

What you have What you get after lookup Which API Endpoint to use?
Linkedin (Person) Profile URL Work Email Address Work Email Lookup Endpoint
Work Email Address Linkedin (Person) Profile URL Reverse Email Lookup Endpoint
Linkedin (Person) Profile URL List of Personal Contact Numbers Personal Contact Number Lookup Endpoint
Linkedin (Person) Profile URL List of Personal Emails Personal Email Lookup Endpoint

Meta API

What you have What you get Which API Endpoint to use?
A Proxycurl API Key Balance of credits View Credit Balance Endpoint

Enrichment API

Linkedin Employee Listing Count Endpoint

GET /proxycurl/api/linkedin/company/employees/count

Cost: 10 credits / successful request 1 credit / successful request. (Temporary discount until 30st September 2021).

Get a number of total employees of a Company.

This API endpoint is limited by LinkDB which is populated with profiles in the US, Canada, Israel and Singapore. As such, this endpoint is best used to list employees working in companies based in the US, Canada, Israel and Singapore only.

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/company/employees/count?employment_status=current&url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fnubela
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/company/employees/count'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'employment_status': 'current',
    'url': 'https://www.linkedin.com/company/nubela',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
employment_status no Parameter to tell the API to filter past or current employees.

Valid values are current, past, and all:

* current (default) : count current employees
* past : count past employees
* all : count current & past employees
current
url yes URL of the Linkedin Company Profile to crawl.

URL should be in the format of https://www.linkedin.com/company/<public_identifier>
https://www.linkedin.com/company/nubela

Response

{
    "total_employee": 1
}
Key Description Example
total_employee 1

Linkedin Jobs Listing Endpoint

GET /proxycurl/api/v2/linkedin/company/job

Cost: 1 credit / successful request.

List jobs posted by a company on Linkedin

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/v2/linkedin/company/job?search_id=4999584
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/v2/linkedin/company/job'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'search_id': '4999584',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
search_id yes The search_id of the company on Linkedin.
You can get the search_id of a Linkedin company via Company Profile API.
4999584

Response

{
    "job": [
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Product Trainer",
            "job_url": "https://it.linkedin.com/jobs/view/product-trainer-at-doctolib-2590344814",
            "list_date": "2021-06-12",
            "location": "Milan, Lombardy, Italy"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Operations Strategy Intern (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/operations-strategy-intern-x-f-m-at-doctolib-2561508431",
            "list_date": "2021-05-26",
            "location": "Greater Paris Metropolitan Region"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Corporate FP\u0026A Intern (x/h/f)",
            "job_url": "https://fr.linkedin.com/jobs/view/corporate-fp-a-intern-x-h-f-at-doctolib-2587845866",
            "list_date": "2021-06-10",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Product Operations Strategy Intern",
            "job_url": "https://fr.linkedin.com/jobs/view/product-operations-strategy-intern-at-doctolib-2490140006",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Marketing Business Analyst Intern",
            "job_url": "https://fr.linkedin.com/jobs/view/marketing-business-analyst-intern-at-doctolib-2561508445",
            "list_date": "2021-05-26",
            "location": "Greater Paris Metropolitan Region"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Product Designer (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/product-designer-x-f-m-at-doctolib-2528386868",
            "list_date": "2021-06-11",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Stage Strategic Business Analyst",
            "job_url": "https://fr.linkedin.com/jobs/view/stage-strategic-business-analyst-at-doctolib-2500109638",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Commerciale",
            "job_url": "https://it.linkedin.com/jobs/view/commerciale-at-doctolib-2604923019",
            "list_date": "2021-06-21",
            "location": "Bergamo, Lombardy, Italy"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Senior Product Manager",
            "job_url": "https://fr.linkedin.com/jobs/view/senior-product-manager-at-doctolib-2593704383",
            "list_date": "2021-06-14",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "R\u0026D Financing Intern (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/r-d-financing-intern-x-f-m-at-doctolib-2561506846",
            "list_date": "2021-05-26",
            "location": "Greater Paris Metropolitan Region"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Product Marketing Manager",
            "job_url": "https://fr.linkedin.com/jobs/view/product-marketing-manager-at-doctolib-2490139056",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Operations Strategy Intern (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/operations-strategy-intern-x-f-m-at-doctolib-2490136448",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Program Manager - Tech \u0026 Product Learning",
            "job_url": "https://fr.linkedin.com/jobs/view/program-manager-tech-product-learning-at-doctolib-2585145595",
            "list_date": "2021-06-09",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "People Strategy Associate - Global Operations Team (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/people-strategy-associate-global-operations-team-x-f-m-at-doctolib-2551259268",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Junior Account Manager (x/f/h)",
            "job_url": "https://fr.linkedin.com/jobs/view/junior-account-manager-x-f-h-at-doctolib-2539689891",
            "list_date": "2021-06-17",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Engineering Program Manager (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/engineering-program-manager-x-f-m-at-doctolib-2594474723",
            "list_date": "2021-06-15",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Assistant(e) marketing digital (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/assistant-e-marketing-digital-x-f-m-at-doctolib-2597314424",
            "list_date": "2021-06-16",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Business Developer (x/f/m) - Milan",
            "job_url": "https://it.linkedin.com/jobs/view/business-developer-x-f-m-milan-at-doctolib-2593705285",
            "list_date": "2021-06-14",
            "location": "Milan, Lombardy, Italy"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Assistant(e) marketing digital (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/assistant-e-marketing-digital-x-f-m-at-doctolib-2561507819",
            "list_date": "2021-05-26",
            "location": "Paris, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Brand Designer (x/f/m)",
            "job_url": "https://fr.linkedin.com/jobs/view/brand-designer-x-f-m-at-doctolib-2595435660",
            "list_date": "2021-06-15",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Field Sales Account (x/f/m) - Varese",
            "job_url": "https://it.linkedin.com/jobs/view/field-sales-account-x-f-m-varese-at-doctolib-2593707075",
            "list_date": "2021-06-14",
            "location": "Milan, Lombardy, Italy"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Engineering Manager (x/f/h)",
            "job_url": "https://fr.linkedin.com/jobs/view/engineering-manager-x-f-h-at-doctolib-2583430359",
            "list_date": "2021-06-08",
            "location": "Nantes, Pays de la Loire, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "B to C Marketing Manager Italy (x/f/m)",
            "job_url": "https://it.linkedin.com/jobs/view/b-to-c-marketing-manager-italy-x-f-m-at-doctolib-2572077585",
            "list_date": "2021-06-01",
            "location": "Milan, Lombardy, Italy"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Ethics \u0026 Compliance Officer (x/h/f)",
            "job_url": "https://fr.linkedin.com/jobs/view/ethics-compliance-officer-x-h-f-at-doctolib-2564936530",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        },
        {
            "company": "Doctolib",
            "company_url": "https://fr.linkedin.com/company/doctolib",
            "job_title": "Engineering Manager (x/f/h)",
            "job_url": "https://fr.linkedin.com/jobs/view/engineering-manager-x-f-h-at-doctolib-2551257616",
            "list_date": "2021-06-18",
            "location": "Levallois-Perret, \u00cele-de-France, France"
        }
    ],
    "next_page_api_url": "http://nubela.co/proxycurl-dev/proxycurl-dev/api/v2/linkedin/company/job?pagination=eyJwYWdlIjogMSwgImNvb2tpZXMiOiBbeyJ2ZXJzaW9uIjogMCwgIm5hbWUiOiAiYmNvb2tpZSIsICJ2YWx1ZSI6ICJcInY9MiYwNDMxY2I0YS0yZmI2LTQ5ZTUtOGYxMC01ZTQ2MDU0NGEyMTNcIiIsICJwb3J0IjogbnVsbCwgInBvcnRfc3BlY2lmaWVkIjogZmFsc2UsICJkb21haW4iOiAiLmxpbmtlZGluLmNvbSIsICJkb21haW5fc3BlY2lmaWVkIjogdHJ1ZSwgImRvbWFpbl9pbml0aWFsX2RvdCI6IHRydWUsICJwYXRoIjogIi8iLCAicGF0aF9zcGVjaWZpZWQiOiB0cnVlLCAic2VjdXJlIjogdHJ1ZSwgImV4cGlyZXMiOiAxNjg3MzgwMzE0LCAiZGlzY2FyZCI6IGZhbHNlLCAiY29tbWVudCI6IG51bGwsICJjb21tZW50X3VybCI6IG51bGwsICJyZmMyMTA5IjogZmFsc2UsICJyZXN0IjogeyJTYW1lU2l0ZSI6ICJOb25lIn19LCB7InZlcnNpb24iOiAwLCAibmFtZSI6ICJsYW5nIiwgInZhbHVlIjogInY9MiZsYW5nPWVuLXVzIiwgInBvcnQiOiBudWxsLCAicG9ydF9zcGVjaWZpZWQiOiBmYWxzZSwgImRvbWFpbiI6ICIubGlua2VkaW4uY29tIiwgImRvbWFpbl9zcGVjaWZpZWQiOiB0cnVlLCAiZG9tYWluX2luaXRpYWxfZG90IjogZmFsc2UsICJwYXRoIjogIi8iLCAicGF0aF9zcGVjaWZpZWQiOiB0cnVlLCAic2VjdXJlIjogdHJ1ZSwgImV4cGlyZXMiOiBudWxsLCAiZGlzY2FyZCI6IHRydWUsICJjb21tZW50IjogbnVsbCwgImNvbW1lbnRfdXJsIjogbnVsbCwgInJmYzIxMDkiOiBmYWxzZSwgInJlc3QiOiB7IlNhbWVTaXRlIjogIk5vbmUifX0sIHsidmVyc2lvbiI6IDAsICJuYW1lIjogImxpZGMiLCAidmFsdWUiOiAiXCJiPVZHU1QwNDpzPVY6cj1WOmE9VjpwPVY6Zz0yMzg1OnU9MTppPTE2MjQyNjY0NjI6dD0xNjI0MzUyODYyOnY9MjpzaWc9QVFFV0RfVlJ1NERoOHRBam5PY1NrNl9Rc2IzQkxjNTFcIiIsICJwb3J0IjogbnVsbCwgInBvcnRfc3BlY2lmaWVkIjogZmFsc2UsICJkb21haW4iOiAiLmxpbmtlZGluLmNvbSIsICJkb21haW5fc3BlY2lmaWVkIjogdHJ1ZSwgImRvbWFpbl9pbml0aWFsX2RvdCI6IHRydWUsICJwYXRoIjogIi8iLCAicGF0aF9zcGVjaWZpZWQiOiB0cnVlLCAic2VjdXJlIjogdHJ1ZSwgImV4cGlyZXMiOiAxNjI0MzUyODYyLCAiZGlzY2FyZCI6IGZhbHNlLCAiY29tbWVudCI6IG51bGwsICJjb21tZW50X3VybCI6IG51bGwsICJyZmMyMTA5IjogZmFsc2UsICJyZXN0IjogeyJTYW1lU2l0ZSI6ICJOb25lIn19LCB7InZlcnNpb24iOiAwLCAibmFtZSI6ICJKU0VTU0lPTklEIiwgInZhbHVlIjogImFqYXg6Mjc5OTYwNDI3NjIzMDA1NzY0NCIsICJwb3J0IjogbnVsbCwgInBvcnRfc3BlY2lmaWVkIjogZmFsc2UsICJkb21haW4iOiAiLnd3dy5saW5rZWRpbi5jb20iLCAiZG9tYWluX3NwZWNpZmllZCI6IHRydWUsICJkb21haW5faW5pdGlhbF9kb3QiOiB0cnVlLCAicGF0aCI6ICIvIiwgInBhdGhfc3BlY2lmaWVkIjogdHJ1ZSwgInNlY3VyZSI6IHRydWUsICJleHBpcmVzIjogbnVsbCwgImRpc2NhcmQiOiB0cnVlLCAiY29tbWVudCI6IG51bGwsICJjb21tZW50X3VybCI6IG51bGwsICJyZmMyMTA5IjogZmFsc2UsICJyZXN0IjogeyJTYW1lU2l0ZSI6ICJOb25lIn19LCB7InZlcnNpb24iOiAwLCAibmFtZSI6ICJic2Nvb2tpZSIsICJ2YWx1ZSI6ICJcInY9MSYyMDIxMDYyMTA5MDc0MjYwZDBhODgwLWUyZWMtNDMzZS04NzY5LTRmOWIxZDIwZWI3NkFRSE94ekJsQWxvWnVSYzBySlVmNXJBQ2RWSnBaZmNLXCIiLCAicG9ydCI6IG51bGwsICJwb3J0X3NwZWNpZmllZCI6IGZhbHNlLCAiZG9tYWluIjogIi53d3cubGlua2VkaW4uY29tIiwgImRvbWFpbl9zcGVjaWZpZWQiOiB0cnVlLCAiZG9tYWluX2luaXRpYWxfZG90IjogdHJ1ZSwgInBhdGgiOiAiLyIsICJwYXRoX3NwZWNpZmllZCI6IHRydWUsICJzZWN1cmUiOiB0cnVlLCAiZXhwaXJlcyI6IDE2ODczODAzMTQsICJkaXNjYXJkIjogZmFsc2UsICJjb21tZW50IjogbnVsbCwgImNvbW1lbnRfdXJsIjogbnVsbCwgInJmYzIxMDkiOiBmYWxzZSwgInJlc3QiOiB7Ikh0dHBPbmx5IjogbnVsbCwgIlNhbWVTaXRlIjogIk5vbmUifX1dfQ\u0026search_id=4999584",
    "next_page_no": 1,
    "previous_page_api_url": null,
    "previous_page_no": null
}
Key Description Example
job List of Job See Job
next_page_no 1
next_page_api_url "http://nubela.co/proxycurl-dev/proxycurl-dev/api/v2/linkedin/company/job?pagination=eyJwYWdlIjogMSwgImNvb2tpZXMiOiBbeyJ2ZXJzaW9uIjogMCwgIm5hbWUiOiAiYmNvb2tpZSIsICJ2YWx1ZSI6ICJcInY9MiYwNDMxY2I0YS0yZmI2LTQ5ZTUtOGYxMC01ZTQ2MDU0NGEyMTNcIiIsICJwb3J0IjogbnVsbCwgInBvcnRfc3BlY2lmaWVkIjogZmFsc2UsICJkb21haW4iOiAiLmxpbmtlZGluLmNvbSIsICJkb21haW5fc3BlY2lmaWVkIjogdHJ1ZSwgImRvbWFpbl9pbml0aWFsX2RvdCI6IHRydWUsICJwYXRoIjogIi8iLCAicGF0aF9zcGVjaWZpZWQiOiB0cnVlLCAic2VjdXJlIjogdHJ1ZSwgImV4cGlyZXMiOiAxNjg3MzgwMzE0LCAiZGlzY2FyZCI6IGZhbHNlLCAiY29tbWVudCI6IG51bGwsICJjb21tZW50X3VybCI6IG51bGwsICJyZmMyMTA5IjogZmFsc2UsICJyZXN0IjogeyJTYW1lU2l0ZSI6ICJOb25lIn19LCB7InZlcnNpb24iOiAwLCAibmFtZSI6ICJsYW5nIiwgInZhbHVlIjogInY9MiZsYW5nPWVuLXVzIiwgInBvcnQiOiBudWxsLCAicG9ydF9zcGVjaWZpZWQiOiBmYWxzZSwgImRvbWFpbiI6ICIubGlua2VkaW4uY29tIiwgImRvbWFpbl9zcGVjaWZpZWQiOiB0cnVlLCAiZG9tYWluX2luaXRpYWxfZG90IjogZmFsc2UsICJwYXRoIjogIi8iLCAicGF0aF9zcGVjaWZpZWQiOiB0cnVlLCAic2VjdXJlIjogdHJ1ZSwgImV4cGlyZXMiOiBudWxsLCAiZGlzY2FyZCI6IHRydWUsICJjb21tZW50IjogbnVsbCwgImNvbW1lbnRfdXJsIjogbnVsbCwgInJmYzIxMDkiOiBmYWxzZSwgInJlc3QiOiB7IlNhbWVTaXRlIjogIk5vbmUifX0sIHsidmVyc2lvbiI6IDAsICJuYW1lIjogImxpZGMiLCAidmFsdWUiOiAiXCJiPVZHU1QwNDpzPVY6cj1WOmE9VjpwPVY6Zz0yMzg1OnU9MTppPTE2MjQyNjY0NjI6dD0xNjI0MzUyODYyOnY9MjpzaWc9QVFFV0RfVlJ1NERoOHRBam5PY1NrNl9Rc2IzQkxjNTFcIiIsICJwb3J0IjogbnVsbCwgInBvcnRfc3BlY2lmaWVkIjogZmFsc2UsICJkb21haW4iOiAiLmxpbmtlZGluLmNvbSIsICJkb21haW5fc3BlY2lmaWVkIjogdHJ1ZSwgImRvbWFpbl9pbml0aWFsX2RvdCI6IHRydWUsICJwYXRoIjogIi8iLCAicGF0aF9zcGVjaWZpZWQiOiB0cnVlLCAic2VjdXJlIjogdHJ1ZSwgImV4cGlyZXMiOiAxNjI0MzUyODYyLCAiZGlzY2FyZCI6IGZhbHNlLCAiY29tbWVudCI6IG51bGwsICJjb21tZW50X3VybCI6IG51bGwsICJyZmMyMTA5IjogZmFsc2UsICJyZXN0IjogeyJTYW1lU2l0ZSI6ICJOb25lIn19LCB7InZlcnNpb24iOiAwLCAibmFtZSI6ICJKU0VTU0lPTklEIiwgInZhbHVlIjogImFqYXg6Mjc5OTYwNDI3NjIzMDA1NzY0NCIsICJwb3J0IjogbnVsbCwgInBvcnRfc3BlY2lmaWVkIjogZmFsc2UsICJkb21haW4iOiAiLnd3dy5saW5rZWRpbi5jb20iLCAiZG9tYWluX3NwZWNpZmllZCI6IHRydWUsICJkb21haW5faW5pdGlhbF9kb3QiOiB0cnVlLCAicGF0aCI6ICIvIiwgInBhdGhfc3BlY2lmaWVkIjogdHJ1ZSwgInNlY3VyZSI6IHRydWUsICJleHBpcmVzIjogbnVsbCwgImRpc2NhcmQiOiB0cnVlLCAiY29tbWVudCI6IG51bGwsICJjb21tZW50X3VybCI6IG51bGwsICJyZmMyMTA5IjogZmFsc2UsICJyZXN0IjogeyJTYW1lU2l0ZSI6ICJOb25lIn19LCB7InZlcnNpb24iOiAwLCAibmFtZSI6ICJic2Nvb2tpZSIsICJ2YWx1ZSI6ICJcInY9MSYyMDIxMDYyMTA5MDc0MjYwZDBhODgwLWUyZWMtNDMzZS04NzY5LTRmOWIxZDIwZWI3NkFRSE94ekJsQWxvWnVSYzBySlVmNXJBQ2RWSnBaZmNLXCIiLCAicG9ydCI6IG51bGwsICJwb3J0X3NwZWNpZmllZCI6IGZhbHNlLCAiZG9tYWluIjogIi53d3cubGlua2VkaW4uY29tIiwgImRvbWFpbl9zcGVjaWZpZWQiOiB0cnVlLCAiZG9tYWluX2luaXRpYWxfZG90IjogdHJ1ZSwgInBhdGgiOiAiLyIsICJwYXRoX3NwZWNpZmllZCI6IHRydWUsICJzZWN1cmUiOiB0cnVlLCAiZXhwaXJlcyI6IDE2ODczODAzMTQsICJkaXNjYXJkIjogZmFsc2UsICJjb21tZW50IjogbnVsbCwgImNvbW1lbnRfdXJsIjogbnVsbCwgInJmYzIxMDkiOiBmYWxzZSwgInJlc3QiOiB7Ikh0dHBPbmx5IjogbnVsbCwgIlNhbWVTaXRlIjogIk5vbmUifX1dfQ\u0026search_id=4999584"
previous_page_no null
previous_page_api_url null

Job

Key Description Example
company "Doctolib"
company_url "https://fr.linkedin.com/company/doctolib"
job_title "Product Trainer"
job_url "https://it.linkedin.com/jobs/view/product-trainer-at-doctolib-2590344814"
list_date "2021-06-12"
location "Milan, Lombardy, Italy"

Linkedin Employee Listing Endpoint

GET /proxycurl/api/linkedin/company/employees/

Cost: 5 credits / employee returned 3 credits / employee returned. (Temporary discount until 30st September 2021). Minimum cost of this endpoint is 10 credits.

Get a list of employees of a Company.

This API endpoint is limited by LinkDB which is populated with profiles in the US, Canada, Israel and Singapore. As such, this endpoint is best used to list employees working in companies based in the US, Canada, Israel and Singapore only.

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/company/employees/?employment_status=current&url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fnubela
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/company/employees/'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'employment_status': 'current',
    'url': 'https://www.linkedin.com/company/nubela',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
employment_status no Parameter to tell the API to return past or current employees.

Valid values are current, past, and all:

* current (default) : lists current employees
* past : lists past employees
* all : lists current & past employees
current
url yes URL of the Linkedin Company Profile to crawl.

URL should be in the format of https://www.linkedin.com/company/<public_identifier>
https://www.linkedin.com/company/nubela

Response

{
    "employees": [
        {
            "profile_url": "https://www.linkedin.com/in/steven-goh-6738131b"
        }
    ]
}
Key Description Example
employees List of ProfileUrl See ProfileUrl

ProfileUrl

Key Description Example
profile_url "https://www.linkedin.com/in/steven-goh-6738131b"

Linkedin Profile General Resolution Endpoint

GET /proxycurl/api/linkedin/profile/resolve

Cost: 3 credits / successful request.

Resolve Linkedin Profile

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/profile/resolve?company_domain=nubela.co&location=Singapore&title=CEO&last_name=Goh&first_name=Steven
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/resolve'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'company_domain': 'nubela.co',
    'location': 'Singapore',
    'title': 'CEO',
    'last_name': 'Goh',
    'first_name': 'Steven',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
company_domain yes Company name or domain nubela.co
location no The location of this user.

Name of country, city or state.
Singapore
title no Title that user is holding at his/her current job CEO
last_name no Last name of the user Goh
first_name yes First name of the user Steven

Response

{
    "url": "https://sg.linkedin.com/in/steven-goh-6738131b"
}
Key Description Example
url "https://sg.linkedin.com/in/steven-goh-6738131b"

Remarks

The accuracy of the linkedin profile returned is on a best-effort basis. Results are not guaranteed to be accurate. We are always improving on the accuracy of these endpoints iteratively.

Linkedin Company Profile General Resolution Endpoint

GET /proxycurl/api/linkedin/company/resolve

Cost: 3 credits / successful request.

Resolve Company Linkedin Profile from company name, domain name and location.

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/company/resolve?location=sg&company_domain=nubela.co&company_name=Nubela
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/company/resolve'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'location': 'sg',
    'company_domain': 'nubela.co',
    'company_name': 'Nubela',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
location no The location / region of company.
ISO 3166-1 alpha-2 codes
sg
company_domain yes Company website or Company domain nubela.co
company_name yes Company Name Nubela

Response

{
    "url": "https://sg.linkedin.com/company/nubela"
}
Key Description Example
url "https://sg.linkedin.com/company/nubela"

Remarks

The accuracy of the linkedin company profile returned is on a best-effort basis. Results are not guaranteed to be accurate. We are always improving on the accuracy of these endpoints iteratively.

Linkedin Company Profile Endpoint

GET /proxycurl/api/linkedin/company

Cost: 1 credit / successful request.

Get structured data of a Linkedin Company Profile

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/company?extra=include&acquisitions=exclude&url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fapple%2F&use_cache=if-present
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/company'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'extra': 'include',
    'acquisitions': 'exclude',
    'url': 'https://www.linkedin.com/company/apple/',
    'use_cache': 'if-present',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
extra no exclude will exclude the extra params
include will include the extra params (+1 credits)
include
acquisitions no Accepted values are:

* exclude : This is the default value. acquisitions will be null.

* include : Additional data will be included and 1 additional credit will be charged if acquisition data can be found.
exclude
url yes URL of the Linkedin Company Profile to crawl.

URL should be in the format of https://www.linkedin.com/company/<public_identifier>
https://www.linkedin.com/company/apple/
use_cache no if-present fetch from cache then if not present, do a live scrape

if-recent the default behaviour fetch from cache, then if not present or if it's > 30 days old, do a live scrape
if-present

Response

{
    "acquisitions": null,
    "background_cover_image_url": null,
    "company_size": [
        10001,
        null
    ],
    "company_size_on_linkedin": 264940,
    "company_type": "PUBLIC_COMPANY",
    "description": "We\u2019re a diverse collective of thinkers and doers, continually reimagining what\u2019s possible to help us all do what we love in new ways. And the same innovation that goes into our products also applies to our practices \u2014 strengthening our commitment to leave the world better than we found it. This is where your work can make a difference in people\u2019s lives. Including your own.\n\nApple is an equal opportunity employer that is committed to inclusion and diversity. Visit apple.com/careers to learn more.",
    "extra": {
        "company_type": "For Profit",
        "contact_email": null,
        "crunchbase_rank": 30,
        "facebook_id": "apple",
        "founding_date": {
            "day": 1,
            "month": 1,
            "year": 4
        },
        "id": "apple",
        "ipo_date": null,
        "ipo_status": "Public",
        "linkedin_id": "apple",
        "number_of_acquisitions": 123,
        "number_of_exits": 10,
        "number_of_funding_rounds": 6,
        "number_of_investments": 20,
        "number_of_investors": 6,
        "number_of_lead_investments": 14,
        "number_of_lead_investors": 3,
        "operating_status": "Active",
        "phone_number": "(408)996-1010",
        "stock_symbol": "NASDAQ:AAPL",
        "total_fund_raised": 300000000,
        "total_funding_amount": 6200000000,
        "twitter_id": "apple"
    },
    "follower_count": 14420676,
    "founded_year": 1976,
    "hq": {
        "city": "Cupertino",
        "country": "US",
        "is_hq": true,
        "line_1": "1 Apple Park Way",
        "postal_code": "95014",
        "state": "California"
    },
    "industry": "Consumer Electronics",
    "linkedin_internal_id": "162479",
    "locations": [
        {
            "city": "Cupertino",
            "country": "US",
            "is_hq": true,
            "line_1": "1 Apple Park Way",
            "postal_code": "95014",
            "state": "California"
        }
    ],
    "name": "Apple",
    "profile_pic_url": null,
    "search_id": "162479",
    "similar_companies": [
        {
            "industry": "Internet",
            "link": "https://www.linkedin.com/company/google",
            "location": "Mountain View, CA",
            "name": "Google"
        },
        {
            "industry": "Internet",
            "link": "https://www.linkedin.com/company/amazon",
            "location": "Seattle, WA",
            "name": "Amazon"
        },
        {
            "industry": "Computer Software",
            "link": "https://www.linkedin.com/company/microsoft",
            "location": "Redmond, Washington",
            "name": "Microsoft"
        },
        {
            "industry": "Automotive",
            "link": "https://www.linkedin.com/company/tesla-motors",
            "location": "Palo Alto, CA",
            "name": "Tesla"
        },
        {
            "industry": "Internet",
            "link": "https://www.linkedin.com/company/facebook",
            "location": "Menlo Park, CA",
            "name": "Facebook"
        },
        {
            "industry": "Entertainment",
            "link": "https://www.linkedin.com/company/netflix",
            "location": "Los Gatos, CA",
            "name": "Netflix"
        },
        {
            "industry": "Information Technology and Services",
            "link": "https://www.linkedin.com/company/ibm",
            "location": "Armonk, New York, NY",
            "name": "IBM"
        },
        {
            "industry": "Consumer Electronics",
            "link": "https://kr.linkedin.com/company/samsung-electronics",
            "location": "Suwon-Si, Gyeonggi-Do",
            "name": "Samsung Electronics"
        },
        {
            "industry": "Sporting Goods",
            "link": "https://www.linkedin.com/company/nike",
            "location": "Beaverton, OR",
            "name": "Nike"
        },
        {
            "industry": "Food \u0026 Beverages",
            "link": "https://ch.linkedin.com/company/nestle-s-a-",
            "location": null,
            "name": "Nestl\u00e9"
        }
    ],
    "specialities": [
        "Innovative Product Development",
        "World-Class Operations",
        "Retail",
        "Telephone Support"
    ],
    "tagline": null,
    "universal_name_id": "apple",
    "website": "http://www.apple.com/careers"
}
Key Description Example
linkedin_internal_id Linkedin's Internal and immutable ID of this Company profile. "162479"
description "We\u2019re a diverse collective of thinkers and doers, continually reimagining what\u2019s possible to help us all do what we love in new ways. And the same innovation that goes into our products also applies to our practices \u2014 strengthening our commitment to leave the world better than we found it. This is where your work can make a difference in people\u2019s lives. Including your own.\n\nApple is an equal opportunity employer that is committed to inclusion and diversity. Visit apple.com/careers to learn more."
website "http://www.apple.com/careers"
industry "Consumer Electronics"
company_size Listed range of company head count [10001, null]
company_size_on_linkedin 264940
hq {"city": "Cupertino", "country": "US", "is_hq": true, "line_1": "1 Apple Park Way", "postal_code": "95014", "state": "California"}
company_type Possible values:

EDUCATIONAL: Educational Institution

GOVERNMENT_AGENCY: Government Agency

NON_PROFIT : Nonprofit

PARTNERSHIP : Partnership

PRIVATELY_HELD: Privately Held

PUBLIC_COMPANY: Public Company

SELF_EMPLOYED: Self-Employed

SELF_OWNED: Sole Proprietorship
"PUBLIC_COMPANY"
founded_year 1976
specialities ["Innovative Product Development", "World-Class Operations", "Retail", "Telephone Support"]
locations List of CompanyLocation See CompanyLocation
name "Apple"
tagline null
universal_name_id "apple"
profile_pic_url null
background_cover_image_url null
search_id Useable with Job listing endpoint "162479"
similar_companies List of SimilarCompany See SimilarCompany
follower_count 14420676
acquisitions null
extra Company extra when extra=include {"company_type": "For Profit", "contact_email": null, "crunchbase_rank": 30, "facebook_id": "apple", "founding_date": {"day": 1, "month": 1, "year": 4}, "id": "apple", "ipo_date": null, "ipo_status": "Public", "linkedin_id": "apple", "number_of_acquisitions": 123, "number_of_exits": 10, "number_of_funding_rounds": 6, "number_of_investments": 20, "number_of_investors": 6, "number_of_lead_investments": 14, "number_of_lead_investors": 3, "operating_status": "Active", "phone_number": "(408)996-1010", "stock_symbol": "NASDAQ:AAPL", "total_fund_raised": 300000000, "total_funding_amount": 6200000000, "twitter_id": "apple"}

CompanyLocation

Key Description Example
country "US"
city "Cupertino"
postal_code "95014"
line_1 "1 Apple Park Way"
is_hq true
state "California"

SimilarCompany

Key Description Example
name "Google"
link "https://www.linkedin.com/company/google"
industry "Internet"
location "Mountain View, CA"

Linkedin Job Profile Endpoint

GET /proxycurl/api/linkedin/job

Cost: 1 credit / successful request.

Get structured data of a Linkedin Job Profile

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/job?url=https%3A%2F%2Fwww.linkedin.com%2Fjobs%2Fview%2F1846530349%2F
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/job'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'url': 'https://www.linkedin.com/jobs/view/1846530349/',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
url yes URL of the Linkedin Job Profile to crawl.

URL should be in the format of https://www.linkedin.com/jobs/view/<job_id>.
LinkedIn Job Listing Endpoint can be used to retrieve a job URL.
https://www.linkedin.com/jobs/view/1846530349/

Response

{
    "apply_url": null,
    "company": {},
    "employment_type": null,
    "industry": [],
    "job_description": null,
    "job_functions": [],
    "linkedin_internal_id": null,
    "location": null,
    "people_also_viewed": [],
    "seniority_level": null,
    "similar_jobs": [],
    "title": null,
    "total_applicants": null
}
Key Description Example
linkedin_internal_id null
job_description null
apply_url null
title null
location null
company {}
seniority_level null
industry []
employment_type null
job_functions []
people_also_viewed []
similar_jobs []
total_applicants null

Linkedin Person Profile Endpoint

GET /proxycurl/api/v2/linkedin

Cost: 1 credit / successful request.

Get structured data of a Linkedin Personal Profile

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/v2/linkedin?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fsteven-goh-6738131b&use_cache=if-present
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/v2/linkedin'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'url': 'https://www.linkedin.com/in/steven-goh-6738131b',
    'use_cache': 'if-present',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
url yes URL of the Linkedin Profile to crawl.

URL should be in the format of https://www.linkedin.com/in/<public-identifier>
https://www.linkedin.com/in/steven-goh-6738131b
use_cache no if-present fetch from cache then if not present, do a live scrape

if-recent The default behaviour fetch from cache, then if not present or if it's > 30 days old, do a live scrape
if-present

Response

{
    "accomplishment_courses": [
        {
            "name": "some course name",
            "number": "123"
        }
    ],
    "accomplishment_honors_awards": [
        {
            "description": "honour-desc",
            "issued_on": {
                "day": 1,
                "month": 2,
                "year": 2018
            },
            "issuer": "some-issuer",
            "title": "some-honour"
        }
    ],
    "accomplishment_organisations": [
        {
            "description": "some description",
            "ends_at": null,
            "org_name": "some-accomplishment-org",
            "starts_at": {
                "day": 1,
                "month": 2,
                "year": 2013
            },
            "title": "position_held"
        }
    ],
    "accomplishment_patents": [
        {
            "application_number": "123",
            "description": "some patent desc",
            "issued_on": {
                "day": 3,
                "month": 2,
                "year": 2016
            },
            "issuer": "Singapore",
            "patent_number": "123",
            "title": "nubela-patent",
            "url": "http://nubela.co/patent"
        }
    ],
    "accomplishment_projects": [
        {
            "description": "some project",
            "ends_at": {
                "day": 31,
                "month": 1,
                "year": 2070
            },
            "starts_at": {
                "day": 1,
                "month": 4,
                "year": 2017
            },
            "title": "some project",
            "url": "https://nubela.co"
        }
    ],
    "accomplishment_publications": [
        {
            "description": "some description",
            "name": "nubela-publication",
            "published_on": {
                "day": 2,
                "month": 3,
                "year": 2016
            },
            "publisher": "nubela-publisher",
            "url": "http://nubela.co/pub"
        }
    ],
    "accomplishment_test_scores": [
        {
            "date_on": {
                "day": 1,
                "month": 2,
                "year": 2013
            },
            "description": "nailed-it",
            "name": "cs1101s",
            "score": "A"
        }
    ],
    "activities": [
        {
            "activity_status": "Liked by Steven Goh",
            "link": "https://www.linkedin.com/signup/cold-join",
            "title": "We\u0027re welcoming on board Jasvind Singh, our new Performance Marketing Lead for APAC! In this role, Jasvind will be taking charge of the strategy and\u2026"
        },
        {
            "activity_status": "Shared by Steven Goh",
            "link": "https://www.linkedin.com/signup/cold-join",
            "title": "870k Israeli profiles added to LinkDB https://lnkd.in/gNifNwzA"
        },
        {
            "activity_status": "Shared by Steven Goh",
            "link": "https://www.linkedin.com/signup/cold-join",
            "title": "Can Proxycurl scrape LinkedIn profile connections? https://lnkd.in/gc4DD4X2"
        }
    ],
    "articles": [],
    "background_cover_image_url": "http://localhost:4566/proxycurl-web-dev/person/steven-goh-6738131b/cover?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=%2F20210920%2F%2Fs3%2Faws4_request\u0026X-Amz-Date=20210920T080304Z\u0026X-Amz-Expires=3600\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=9fd498dde4657cbaa10414bd295659fe06c0594e59a8ef5eb7894ea2006744be",
    "certifications": [
        {
            "authority": "Cisco",
            "display_source": "example.com",
            "ends_at": {
                "day": 31,
                "month": 1,
                "year": 2027
            },
            "license_number": "credential-id",
            "name": "Certified Legal Manager (CLM)",
            "starts_at": {
                "day": 1,
                "month": 4,
                "year": 2018
            },
            "url": "http://example.com"
        }
    ],
    "city": "Singapore",
    "connections": 230,
    "country": "SG",
    "country_full_name": "Singapore",
    "education": [
        {
            "degree_name": "Bachelor\u2019s Degree",
            "description": null,
            "ends_at": {
                "day": 31,
                "month": 12,
                "year": 2012
            },
            "field_of_study": "Computer Science",
            "logo_url": "https://media-exp1.licdn.com/dms/image/C4D0BAQGvBq9cz6AIIQ/company-logo_100_100/0/1519856127538?e=1640217600\u0026v=beta\u0026t=Ts5rVFw9KBO_8AwVBocnZA5892C6UrYRe2CkK_fkhhE",
            "school": "National University of Singapore",
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 2008
            }
        }
    ],
    "experiences": [
        {
            "company": "Nubela",
            "company_linkedin_profile_url": "https://sg.linkedin.com/company/nubela",
            "description": null,
            "ends_at": null,
            "location": "Singapore",
            "logo_url": "https://media-exp1.licdn.com/dms/image/C560BAQFt1f6XFygh3Q/company-logo_100_100/0/1614306008404?e=1640217600\u0026v=beta\u0026t=otTdDdly5ykzBCroH7LKiFvCaIjyyLNj3_tvLAcwmm0",
            "starts_at": {
                "day": 1,
                "month": 12,
                "year": 2014
            },
            "title": "Chief Executive Officer"
        },
        {
            "company": "LandX",
            "company_linkedin_profile_url": "https://sg.linkedin.com/company/landx-id",
            "description": null,
            "ends_at": null,
            "location": "Singapore",
            "logo_url": "https://media-exp1.licdn.com/dms/image/C510BAQG4NGiTAOTu-A/company-logo_100_100/0/1552707196654?e=1640217600\u0026v=beta\u0026t=dvYOAbRpVeCgJjkFAkyd24XTT41JKfmQcOzW3BSbdp0",
            "starts_at": {
                "day": 1,
                "month": 11,
                "year": 2017
            },
            "title": "Co-founder / Product Advisor"
        },
        {
            "company": "SIlvrBullet",
            "company_linkedin_profile_url": "https://sg.linkedin.com/company/silvrbullet",
            "description": "I am responsible for revenue-growth, and am primarily responsible in shaping SilvrBullet\u0027s pitch for sales and marketing.I make overarching biz-dev decisions from pricing, to sales angles, to branding and positioning.SilvrBullet is a product of Nubela Co.",
            "ends_at": null,
            "location": "Singapore",
            "logo_url": "https://media-exp1.licdn.com/dms/image/C560BAQFaCxyiIP_SRQ/company-logo_100_100/0/1519904767494?e=1640217600\u0026v=beta\u0026t=F_WNOh5aFml7cKnfeNBOvCJVbp3VNedj9GbZ-rf0S7I",
            "starts_at": {
                "day": 1,
                "month": 10,
                "year": 2016
            },
            "title": "Business Development"
        },
        {
            "company": "Unifide Pte Ltd",
            "company_linkedin_profile_url": null,
            "description": "I founded Unifide, a software consulting firm that I built from scratch with $0 in the bank. In the first month of Unifide, I brought in $40,000 in signed deals in the first month, and grew the team to 5 people.",
            "ends_at": {
                "day": 31,
                "month": 12,
                "year": 2013
            },
            "location": "Singapore",
            "logo_url": null,
            "starts_at": {
                "day": 1,
                "month": 4,
                "year": 2013
            },
            "title": "Founder"
        },
        {
            "company": "Spawt Pte Ltd",
            "company_linkedin_profile_url": null,
            "description": "Spawt was a location-based food and event discovery app. As founder, I wore many hats. From raising venture capital for Spawt, to leading development for Spawt.",
            "ends_at": {
                "day": 31,
                "month": 3,
                "year": 2013
            },
            "location": "Singapore",
            "logo_url": null,
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 2012
            },
            "title": "Founder"
        },
        {
            "company": "Videoplaza (Now Officially Ooyala)",
            "company_linkedin_profile_url": "https://sg.linkedin.com/company/videoplaza",
            "description": "For the bulk of my time at Videoplaza, I dived in deep and worked on core product. Towards the end of my stint at Videoplaza, I took initiative and built an automated testing framework for their product with connecting their Java (GWT) project with Jython for easy test-case writing.",
            "ends_at": {
                "day": 31,
                "month": 5,
                "year": 2012
            },
            "location": "Stockholm, Sweden",
            "logo_url": "https://media-exp1.licdn.com/dms/image/C4D0BAQGl2Q8m6tMP-Q/company-logo_100_100/0/1532803098761?e=1640217600\u0026v=beta\u0026t=pIipSxttd4UN-3yjSyIwwOqaTTaD-iqPSYtN_WmBBLo",
            "starts_at": {
                "day": 1,
                "month": 8,
                "year": 2011
            },
            "title": "Software Engineer"
        }
    ],
    "first_name": "Steven",
    "full_name": "Steven Goh",
    "headline": "The lazy CEO",
    "languages": [
        "Chinese",
        "English"
    ],
    "last_name": "Goh",
    "occupation": "Chief Executive Officer at Nubela",
    "people_also_viewed": [
        {
            "link": "https://id.linkedin.com/in/joni-sunggono-cfp-qwp-aepp-b28bb448",
            "location": "Jakarta",
            "name": "Joni Sunggono CFP,QWP,AEPP",
            "summary": "Co-Founder :\n- Young and Dynamic Insurance Agency\n- LandX Equity CrowdFunding\n- Mentorgue Apps"
        },
        {
            "link": "https://id.linkedin.com/in/priastomo-acsi-5baa54a4",
            "location": "Jakarta",
            "name": "Priastomo , ACSI",
            "summary": "Start-up \u0026 Fin-tech Enthusiast, Entrepreneur"
        },
        {
            "link": "https://id.linkedin.com/in/fendy-heryanto-johan-04a28443",
            "location": "Jakarta",
            "name": "Fendy Heryanto Johan",
            "summary": "Full Stack Software Developer"
        },
        {
            "link": "https://sg.linkedin.com/in/magnesiumman",
            "location": "Singapore",
            "name": "Benjamen Lim",
            "summary": "Strategic and Tactical Asset Allocation"
        },
        {
            "link": "https://id.linkedin.com/in/gunawan-aldy-ba233b159",
            "location": "Jakarta",
            "name": "Gunawan Aldy",
            "summary": "Chief Operating Officer at LandX"
        },
        {
            "link": "https://id.linkedin.com/in/melda-yulia-6ab956179",
            "location": "Jakarta",
            "name": "Melda Yulia",
            "summary": "Head of Customer Support at LandX"
        },
        {
            "link": "https://id.linkedin.com/in/laras-dwilestari-14595a179",
            "location": "Jakarta",
            "name": "Laras Dwilestari",
            "summary": "Head of Human Capital at LandX"
        },
        {
            "link": "https://id.linkedin.com/in/rizky-heriko-putra-94410a68",
            "location": "Jakarta",
            "name": "Rizky Heriko Putra",
            "summary": "Head of Operations at LandX"
        },
        {
            "link": "https://id.linkedin.com/in/itomanu",
            "location": "Bandung",
            "name": "Victor Manu",
            "summary": "Developer"
        },
        {
            "link": "https://id.linkedin.com/in/ria-setiawati-16741a1b7",
            "location": "Kota Surabaya",
            "name": "Ria Setiawati",
            "summary": "Event Planner"
        },
        {
            "link": "https://sg.linkedin.com/in/bach-le-936216179",
            "location": "Singapore",
            "name": "Bach Le",
            "summary": "Software Engineer at Nubela"
        },
        {
            "link": "https://id.linkedin.com/in/danial-habibi",
            "location": "Bandung",
            "name": "Danial Habibi",
            "summary": "Software Engineer at Nubela Co"
        },
        {
            "link": "https://www.linkedin.com/in/paul-meed",
            "location": "Washington DC-Baltimore Area",
            "name": "Paul Meed",
            "summary": "CEO at Moonbounce"
        },
        {
            "link": "https://sg.linkedin.com/in/zi-chao-lim-4a09aa4a",
            "location": "Singapore",
            "name": "Zi Chao Lim",
            "summary": "Chemical Engineering Student at National University of Singapore"
        },
        {
            "link": "https://id.linkedin.com/in/roywj",
            "location": "Surabaya",
            "name": "Royyan Wijaya",
            "summary": "Visual Designer at Nubela"
        },
        {
            "link": "https://vn.linkedin.com/in/l%C3%AA-v%C4%83n-hi%E1%BB%87p-64b600145",
            "location": "Vietnam",
            "name": "L\u00ea V\u0103n Hi\u1ec7p",
            "summary": "Manager at Landx"
        },
        {
            "link": "https://sg.linkedin.com/in/bach-le-33a915219",
            "location": "Singapore",
            "name": "Bach Le",
            "summary": "Software Engineer at Proxycurl, by Nubela"
        },
        {
            "link": "https://id.linkedin.com/in/m-yusril-sabir",
            "location": "Bandung",
            "name": "M Yusril Sabir",
            "summary": "Software Engineer at Nubela"
        },
        {
            "link": "https://id.linkedin.com/in/wahyu-ade-sasongko",
            "location": "Surabaya",
            "name": "Wahyu Ade Sasongko",
            "summary": "Software Engineer di Nubela"
        },
        {
            "link": "https://in.linkedin.com/in/kapil-pahwa-1bb1b5204",
            "location": "Pune",
            "name": "Kapil Pahwa",
            "summary": "AVP at Deutsche Bank"
        }
    ],
    "profile_pic_url": "http://localhost:4566/proxycurl-web-dev/person/steven-goh-6738131b/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=%2F20210920%2F%2Fs3%2Faws4_request\u0026X-Amz-Date=20210920T080304Z\u0026X-Amz-Expires=3600\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=1a0dbac3a2b871d0850a4e1c93c8eb2cfc95a0f56a2a5751b642690e26ca8791",
    "public_identifier": "steven-goh-6738131b",
    "recommendations": [],
    "similarly_named_profiles": [
        {
            "link": "https://my.linkedin.com/in/steven-goh-56b3b177",
            "location": "Selangor, Malaysia",
            "name": "Steven Goh",
            "summary": "Fluid Control and Measuring System"
        },
        {
            "link": "https://sg.linkedin.com/in/steven-goh-542b9ba3",
            "location": "Singapore",
            "name": "Steven Goh",
            "summary": "Department Manager at ST Engineering Info-Security Pte Ltd"
        },
        {
            "link": "https://au.linkedin.com/in/steven-goh-a618985",
            "location": "Greater Sydney Area",
            "name": "Steven Goh",
            "summary": "Transformation Program Manager at AMP"
        },
        {
            "link": "https://id.linkedin.com/in/steven-goh-02a62b53",
            "location": "Indonesia",
            "name": "Steven Goh",
            "summary": "Golf Resorts--"
        },
        {
            "link": "https://sg.linkedin.com/in/steven-goh-07095626",
            "location": "Singapore",
            "name": "Steven Goh",
            "summary": "Managing Director, SG Retail Network Pte Ltd"
        }
    ],
    "state": null,
    "summary": "summary-text",
    "volunteer_work": [
        {
            "cause": "Children",
            "company": "Doctors Without Borders/M\u00e9decins Sans Fronti\u00e8res (MSF) Canada",
            "company_linkedin_profile_url": "https://sg.linkedin.com/company/msfcanada",
            "description": "children-doctor",
            "ends_at": {
                "day": 29,
                "month": 2,
                "year": 2020
            },
            "logo_url": "https://media-exp1.licdn.com/dms/image/C510BAQGJqrMlMMzZrw/company-logo_100_100/0/1519879124051?e=1640217600\u0026v=beta\u0026t=6P08UIK4r90OjOJsMRh5bG3EFjrcDbnhrrBxyY3ev3o",
            "starts_at": {
                "day": 1,
                "month": 1,
                "year": 2016
            },
            "title": "Doctor"
        }
    ]
}
Key Description Example
public_identifier "steven-goh-6738131b"
profile_pic_url "http://localhost:4566/proxycurl-web-dev/person/steven-goh-6738131b/profile?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=%2F20210920%2F%2Fs3%2Faws4_request\u0026X-Amz-Date=20210920T080304Z\u0026X-Amz-Expires=3600\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=1a0dbac3a2b871d0850a4e1c93c8eb2cfc95a0f56a2a5751b642690e26ca8791"
background_cover_image_url "http://localhost:4566/proxycurl-web-dev/person/steven-goh-6738131b/cover?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=%2F20210920%2F%2Fs3%2Faws4_request\u0026X-Amz-Date=20210920T080304Z\u0026X-Amz-Expires=3600\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=9fd498dde4657cbaa10414bd295659fe06c0594e59a8ef5eb7894ea2006744be"
first_name "Steven"
last_name "Goh"
full_name "Steven Goh"
occupation "Chief Executive Officer at Nubela"
headline "The lazy CEO"
summary "summary-text"
country "SG"
country_full_name "Singapore"
city "Singapore"
state null
experiences List of Experience See Experience
education List of Education See Education
languages ["Chinese", "English"]
accomplishment_organisations List of AccomplishmentOrg See AccomplishmentOrg
accomplishment_publications List of Publication See Publication
accomplishment_honors_awards List of HonourAward See HonourAward
accomplishment_patents List of Patent See Patent
accomplishment_courses List of Course See Course
accomplishment_projects List of Project See Project
accomplishment_test_scores List of TestScore See TestScore
volunteer_work List of VolunteeringExperience See VolunteeringExperience
certifications List of Certification See Certification
connections 230
people_also_viewed List of PeopleAlsoViewed See PeopleAlsoViewed
recommendations []
activities List of Activity See Activity
similarly_named_profiles List of SimilarProfile See SimilarProfile
articles List of Article See Article

Experience

Key Description Example
starts_at {"day": 1, "month": 12, "year": 2014}
ends_at null
company The company's display name. "Nubela"
company_linkedin_profile_url The company's profile URL.

If present, could be used with Company Profile Endpoint for more info.
"https://sg.linkedin.com/company/nubela"
title "Chief Executive Officer"
description null
location "Singapore"
logo_url URL of the logo of the organisation. "https://media-exp1.licdn.com/dms/image/C560BAQFt1f6XFygh3Q/company-logo_100_100/0/1614306008404?e=1640217600\u0026v=beta\u0026t=otTdDdly5ykzBCroH7LKiFvCaIjyyLNj3_tvLAcwmm0"

Education

Key Description Example
starts_at {"day": 1, "month": 1, "year": 2008}
ends_at {"day": 31, "month": 12, "year": 2012}
field_of_study "Computer Science"
degree_name "Bachelor\u2019s Degree"
school "National University of Singapore"
description null
logo_url "https://media-exp1.licdn.com/dms/image/C4D0BAQGvBq9cz6AIIQ/company-logo_100_100/0/1519856127538?e=1640217600\u0026v=beta\u0026t=Ts5rVFw9KBO_8AwVBocnZA5892C6UrYRe2CkK_fkhhE"

AccomplishmentOrg

Key Description Example
starts_at {"day": 1, "month": 2, "year": 2013}
ends_at null
org_name "some-accomplishment-org"
title "position_held"
description "some description"

Publication

Key Description Example
name "nubela-publication"
publisher "nubela-publisher"
published_on {"day": 2, "month": 3, "year": 2016}
description "some description"
url "http://nubela.co/pub"

HonourAward

Key Description Example
title "some-honour"
issuer "some-issuer"
issued_on {"day": 1, "month": 2, "year": 2018}
description "honour-desc"

Patent

Key Description Example
title "nubela-patent"
issuer "Singapore"
issued_on {"day": 3, "month": 2, "year": 2016}
description "some patent desc"
application_number "123"
patent_number "123"
url "http://nubela.co/patent"

Course

Key Description Example
name "some course name"
number "123"

Project

Key Description Example
starts_at {"day": 1, "month": 4, "year": 2017}
ends_at {"day": 31, "month": 1, "year": 2070}
title "some project"
description "some project"
url "https://nubela.co"

TestScore

Key Description Example
description "nailed-it"
score "A"
name "cs1101s"
date_on {"day": 1, "month": 2, "year": 2013}

VolunteeringExperience

Key Description Example
starts_at {"day": 1, "month": 1, "year": 2016}
ends_at {"day": 29, "month": 2, "year": 2020}
cause "Children"
company The company's display name. "Doctors Without Borders/M\u00e9decins Sans Fronti\u00e8res (MSF) Canada"
company_linkedin_profile_url The company's profile URL.

If present, could be used with Company Profile Endpoint for more info.
"https://sg.linkedin.com/company/msfcanada"
title "Doctor"
description "children-doctor"
logo_url URL of the logo of the organisation. "https://media-exp1.licdn.com/dms/image/C510BAQGJqrMlMMzZrw/company-logo_100_100/0/1519879124051?e=1640217600\u0026v=beta\u0026t=6P08UIK4r90OjOJsMRh5bG3EFjrcDbnhrrBxyY3ev3o"

Certification

Key Description Example
starts_at {"day": 1, "month": 4, "year": 2018}
ends_at {"day": 31, "month": 1, "year": 2027}
url "http://example.com"
name "Certified Legal Manager (CLM)"
license_number "credential-id"
display_source "example.com"
authority "Cisco"

PeopleAlsoViewed

Key Description Example
link URL of the profile.

Useable with Person profile endpoint
"https://id.linkedin.com/in/joni-sunggono-cfp-qwp-aepp-b28bb448"
name "Joni Sunggono CFP,QWP,AEPP"
summary "Co-Founder :\n- Young and Dynamic Insurance Agency\n- LandX Equity CrowdFunding\n- Mentorgue Apps"
location "Jakarta"

Activity

Key Description Example
title "We\u0027re welcoming on board Jasvind Singh, our new Performance Marketing Lead for APAC! In this role, Jasvind will be taking charge of the strategy and\u2026"
link "https://www.linkedin.com/signup/cold-join"
activity_status "Liked by Steven Goh"

SimilarProfile

Key Description Example
name "Steven Goh"
link "https://my.linkedin.com/in/steven-goh-56b3b177"
summary "Fluid Control and Measuring System"
location "Selangor, Malaysia"

Disposable email Endpoint

GET /proxycurl/api/disposable-email

Check if the email used is a disposable email.

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/disposable-email?email=steven%40nubela.co
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/disposable-email'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'email': '[email protected]',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
email yes An email address that will be checked [email protected]

Response

{
    "is_disposable_email": false
}
Key Description Example
is_disposable_email false

Page Scrape Endpoint

POST /proxycurl/api

Cost: 1 credit / successful request.

To crawl a page that is otherwise blocked from bulk web scraping, you can make a general request with Proxycurl's pool of workers.

curl \
    -X POST \
    --data '{"data": "Hello", "headers": {"X-Requested-With": "proxycurl"}, "method": "POST", "url": "https://postman-echo.com/post"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api
import requests

api_endpoint = 'https://nubela.co/proxycurl/api'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
body = {
    "data": "Hello",
    "headers": {
        "X-Requested-With": "proxycurl"
    },
    "method": "POST",
    "url": "https://postman-echo.com/post"
}
response = requests.post(api_endpoint,
                        json=body,
                        headers=header_dic)

Request body

Parameter Required Description Example
data no Content to be placed into the body of the request. "Hello"
method no The HTTP method for the node to make the request with.

Defaults to GET.
"POST"
headers no Request headers {"X-Requested-With": "proxycurl"}
url yes The URL of the website you want to crawl "https://postman-echo.com/post"

Response

{
    "data": "{\"args\":{},\"data\":\"Hello\",\"files\":{},\"form\":{},\"headers\":{\"x-forwarded-proto\":\"https\",\"x-forwarded-port\":\"443\",\"host\":\"postman-echo.com\",\"x-amzn-trace-id\":\"Root=1-5f9695aa-7cf41f361797a1f35c7ff841\",\"content-length\":\"5\",\"accept\":\"text/html, */*; q=0.01\",\"x-requested-with\":\"proxycurl\",\"content-type\":\"text/plain;charset=UTF-8\",\"sec-fetch-site\":\"none\",\"sec-fetch-mode\":\"cors\",\"sec-fetch-dest\":\"empty\",\"accept-encoding\":\"gzip, deflate, br\",\"accept-language\":\"en-US,en;q=0.9\"},\"json\":null,\"url\":\"https://postman-echo.com/post\"}",
    "status_code": 200
}
Key Description Example
data Content of the crawled page "{\"args\":{},\"data\":\"Hello\",\"files\":{},\"form\":{},\"headers\":{\"x-forwarded-proto\":\"https\",\"x-forwarded-port\":\"443\",\"host\":\"postman-echo.com\",\"x-amzn-trace-id\":\"Root=1-5f9695aa-7cf41f361797a1f35c7ff841\",\"content-length\":\"5\",\"accept\":\"text/html, */*; q=0.01\",\"x-requested-with\":\"proxycurl\",\"content-type\":\"text/plain;charset=UTF-8\",\"sec-fetch-site\":\"none\",\"sec-fetch-mode\":\"cors\",\"sec-fetch-dest\":\"empty\",\"accept-encoding\":\"gzip, deflate, br\",\"accept-language\":\"en-US,en;q=0.9\"},\"json\":null,\"url\":\"https://postman-echo.com/post\"}"
status_code Status code of the proxied request 200

Contact API

Reverse Email Lookup Endpoint

GET /proxycurl/api/linkedin/profile/resolve/email

Cost: 3 credits / successful request.

Resolve Linkedin Profile from a work email address

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/profile/resolve/email?work_email=steven%40nubela.co
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/resolve/email'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'work_email': '[email protected]',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
work_email yes Work email address of the user [email protected]

Response

{
    "url": "https://sg.linkedin.com/in/steven-goh-6738131b"
}
Key Description Example
url "https://sg.linkedin.com/in/steven-goh-6738131b"

Remarks

The accuracy of the linkedin profile returned is on a best-effort basis. Results are not guaranteed to be accurate. If you have more data points about the user, you are encouraged to use the General Resolution Endpoint for better outcome.

Work Email Lookup Endpoint

GET /proxycurl/api/linkedin/profile/email

Cost: 10 credits / request 3 credits / request. (Temporary discount until 31st November 2021).

Lookup work email address of a LinkedIn Person Profile.

Email addresses returned are verified to not be role-based or catch-all emails. Email addresses returned by our API endpoint come with a 95+% deliverability guarantee

Endpoint behavior

This endpoint may not return results immediately.

For some profiles, email addresses are returned immediately when the endpoint is called. For such requests, we will respond with a 200 status code. Credits will be consumed immediately

Some profiles require more time to extract email address from. For such requests, we will respond with a 202 status code. No credits are consumed.

If you provided a webhook in your request parameter, our application will call your webhook with the result once. See Webhook payload below.

Alternatively, you can also poll (repeat the request) our API and we will return the result once it is successful.

Successful responses to requests are cached for up to 24 hours. We will also not charge you for the same request in a 24 hour window

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/linkedin/profile/email?linkedin_profile_url=https%3A%2F%2Fsg.linkedin.com%2Fin%2Fsteven-goh-6738131b&cache=no-cache&callback_url=https%3A%2F%2Fwebhook.site%2F29e12f17-d5a2-400a-9d08-42ee9d83600a
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/linkedin/profile/email'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'linkedin_profile_url': 'https://sg.linkedin.com/in/steven-goh-6738131b',
    'cache': 'no-cache',
    'callback_url': 'https://webhook.site/29e12f17-d5a2-400a-9d08-42ee9d83600a',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
linkedin_profile_url yes Linkedin Profile URL of the person you want to
extract work email address from.
https://sg.linkedin.com/in/steven-goh-6738131b
cache no The default cache behavior is no-cache, for which we will begin a fresh search
for every request. This maximises the success rate of finding a valid email address.
If you do NOT want to be charged for requests that do not return you any email address,
you should use cache-only so that we only return cached results and will not begin an
exhuastive search for a valid email address.
Possible values are: no-cache, cache-only
no-cache
callback_url no Webhook to notify your application when
the request has finished processing.
https://webhook.site/29e12f17-d5a2-400a-9d08-42ee9d83600a

Status codes

Status codes Description
202 The result is not ready and requires more time to be processed. The API will send
results to you via callback if a callback URL is provided. Or you can poll the API for
results later.
200 The result is ready and returned in the response. Result might include a result of "no
email found".

Response

{
    "email": "[email protected]",
    "status": "email_found"
}
Key Description Example
email Email address of the profile. null` is returned if email is not found. "[email protected]"
status Returns the status of the result of email extraction.

Possible return values are email_found, scraping, email_not_found.

If status is scraping, the status code returned will be 202.
"email_found"

Personal Contact Number Lookup Endpoint

GET /proxycurl/api/contact-api/personal-contact

Cost: 1 credit / contact number returned.

Given an LinkedIn profile, returns a list of personal contact numbers belonging to this identity.

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/contact-api/personal-contact?linkedin_profile_url=https%3A%2F%2Flinkedin.com%2Fin%2Fsteven-goh-6738131b
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-contact'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'linkedin_profile_url': 'https://linkedin.com/in/steven-goh-6738131b',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
linkedin_profile_url yes Linkedin Profile URL of the person you want to extract personal contact numbers from. https://linkedin.com/in/steven-goh-6738131b

Response

{
    "numbers": [
        "+123456789"
    ]
}
Key Description Example
numbers A list of contact numbers ["+123456789"]

Personal Email Lookup Endpoint

GET /proxycurl/api/contact-api/personal-email

Cost: 1 credit / email returned.

Given an Linkedin profile, returns a list of personal emails belonging to this identity. Emails are verified to be deliverable.

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/contact-api/personal-email?linkedin_profile_url=https%3A%2F%2Flinkedin.com%2Fin%2Fsteven-goh-6738131b
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/contact-api/personal-email'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
params = {
    'linkedin_profile_url': 'https://linkedin.com/in/steven-goh-6738131b',
}
response = requests.get(api_endpoint,
                        params=params,
                        headers=header_dic)

URL Parameters

Parameter Required Description Example
linkedin_profile_url yes Linkedin Profile URL of the person you want to extract personal email addresses from. https://linkedin.com/in/steven-goh-6738131b

Response

{
    "emails": [
        "[email protected]",
        "[email protected]"
    ]
}
Key Description Example
emails A list of personal emails ["[email protected]", "[email protected]"]

Meta API

View Credit Balance Endpoint

GET /proxycurl/api/credit-balance

Get your current credit(s) balance

curl \
    -X GET \
    -H "Authorization: Bearer ${YOUR_API_KEY}" \
    https://nubela.co/proxycurl/api/credit-balance
import requests

api_endpoint = 'https://nubela.co/proxycurl/api/credit-balance'
api_key = 'YOUR_API_KEY'
header_dic = {'Authorization': 'Bearer ' + api_key}
response = requests.get(api_endpoint,
                        headers=header_dic)

Response

{
    "credit_balance": 100000
}
Key Description Example
credit_balance Your current credit(s) 100000

LinkDB

LinkDB is a postgresql database populated with pre-crawled (People) Linkedin Profiles.

LinkDB is a beta software and it is expected to be unstable and slow.

Pricing

Access to LinkDB is free. Every user is given their unique LinkDB connection string in the dashboard that they can connect to.

It costs approximately 3 credits to query one profile. To be specific, it costs 3 credits for every 5053 bytes of data that is returned.

Why 5053 bytes? We queried 200 random profiles and take the median value.

Warning

Data is streamed from Postgresql. Any query, no matter how large, will work, but response will be cut off once your credit balance hits 0. Please be careful and avoid performing a large select query unless you are sure what you are doing.

We will NOT refund any credits expended via LinkDB.

Accessing the database

To access LinkDB, you need

  1. LinkDB connection string
  2. psql or a compatible Postgresql client

To get your LinkDB connection string, please log into the dashboard here. Your LinkDB connection string is in your dashboard below the field for API key.

Once you have the connection string, you can go to your terminal and type:

$ psql <LINKDB_CONNECTION_STRING>

Database Schema

The schema of the database is always changing as we add more columns and more data. This is how you can get the schema of LinkDB

  1. Connect to LinkDB
  2. Type \d -> this will list all tables
  3. To view the schema of a table:
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'profile' AND table_schema = 'public'

4. To list indices:

SELECT index_name, table_name, array_agg(column_name) AS columns 
FROM information_schema.statistics
WHERE table_name = 'profile'
    AND table_schema = 'public'
GROUP BY index_name, table_name;

5. Rinse and repeat the same command to get the schema for any table on LinkDB.

Speed of queries and indices

LinkDB is beta software, and it has a significant amount of data. Queries are expected to be slow and to take many minutes to complete.

Once we have a clearer idea as to what the common use-cases are on LinkDB, we will either:

  1. Add indices to speed common queries up
  2. Abstract common use-cases into an API endpoint

What data is LinkDB populated with?

LinkDB is currently populated with public Linkedin profiles of people based in

LinkDB is populated with public Linkedin profiles of company based in

We are always looking to expand LinkDB to more countries. We are also looking to crawl companies. We will update you when more countries or profile types are added.

How often is LinkDB updated?

We update LinkDB with every Linkedin profile scraped with our API.

With best effort, we work to keep profiles no older than three months. Profiles that are interested and often requested are updated much often, usually no older than one month.

LinkDB is not intended for use in your production environment

LinkDB is a shared Postgresql instance and we do not provide performance guarantees of any sort. We will not optimize the database for any specific SQL query.

For production use-cases, you are advised to evaluate the data with LinkDB; then purchase a snapshot of the database for use in your application needs.