Introduction
This documentation will take you through XingZap's search API.
All you need to get started is a search URL or the field map via the /fields
route given in this doc.
You can get request an access key by filling this form !
Xing and limitations
XingZap simply automates what you would be able to do on Xing.
According to Xing's Terms of Service, Xing only returns 300 results per search at maximum. See more details here.
Here's an article posted on our blog to help you overcome this limit.
Moreover, XingZap mines Xing everytime a search is made, no data is kept in databases to respect GDPR regulation. For this reason, a search can take up to 30s.
Rate limit
- 1 call/second
Authentication
All the requests should be authenticated with the X-Api-Key header:
import requests
response = requests.post("https://api.v2.xingzap.com/search",
json={
"keywords":"Head of sales",
"languageFilter":["German"]
},
headers= {
'X-Api-Key':'XINGZAP_API_KEY'
}
)
# With shell, you can just pass the correct header with each request
curl --location --request POST 'https://api.v2.xingzap.com/search' \
-H 'X-Api-Key: XINGZAP_API_KEY'
--data-raw '{
"keywords":"Head of sales",
"languageFilter":["German"]
}'
Make sure to replace
XINGZAP_API_KEY
with your API key.
You can get a test key by filling our access request form..
XingZap expects for the API key to be included in all API requests to the server in a header that looks like the following:
X-Api-Key: XINGZAP_API_KEY
Search
The above command returns the current version of the fields, their usable
search_parameter
names and their values:
[
{
"field_name": "Search",
"search_parameter": "keywords",
"type": "text"
},
{
"field_name": "Name",
"search_parameter": "name",
"type": "text"
},
{
"field_name": "Company",
"search_parameter": "company",
"type": "text"
},
{
"field_name": "Position",
"search_parameter": "title",
"type": "text"
},
{
"field_name": "Company (previous)",
"search_parameter": "previousCompany",
"type": "text"
},
{
"field_name": "Position (previous)",
"search_parameter": "previousTitle",
"type": "text"
},
{
"field_name": "Skills",
"search_parameter": "haves",
"type": "text"
},
{
"field_name": "City",
"search_parameter": "city",
"type": "text"
},
{
"field_name": "University",
"search_parameter": "education",
"type": "text"
},
{
"field_name": "Discipline",
"search_parameter": "disciplineFilter",
"type": "array",
"possible_values": [
"Analysis and statistics",
"Administration",
"Consulting",
"Customer service",
"Purchasing, materials management & logistics",
"Finance, accounting & controlling",
"Teaching, R&D",
"Health, medical and social",
"Graphic design and architecture",
"Engineering and technical",
"IT and software development",
"Management and corporate development",
"Marketing and advertising",
"HR",
"PR and journalism",
"Production and manufacturing",
"Product management",
"Project management",
"Process planning & QA",
"Legal",
"Sales and commerce",
"Other"
]
},
{
"field_name": "Industry",
"search_parameter": "industryFilter",
"type": "array",
"possible_values": [
"Architecture and planning",
"Automotive and vehicle manufacturing",
"Banking and financial services",
"Consulting",
"Energy, water and environment",
"Education and science",
"Health and social",
"Real Estate",
"Industry and mechanical engineering",
"Internet and IT",
"Consumer goods and trade",
"Art, culture and sport",
"Marketing, PR and design",
"Media and publishing",
"Civil service, associations and institutions",
"HR services",
"Medical services",
"Telecommunication",
"Tourism and food service",
"Transport and logistics",
"Insurance",
"Auditing, tax and law",
"Other industries"
]
},
{
"field_name": "Career level",
"search_parameter": "levelFilter",
"type": "array",
"possible_values": [
"Professional/Experienced",
"Manager",
"Executive",
"Senior",
"Entry",
"Student/Intern"
]
},
{
"field_name": "Employment type",
"search_parameter": "currentStatusCodeFilter",
"type": "array",
"possible_values": [
"Full time employee",
"Self employed",
"Owner",
"Part time employee",
"Partner",
"Intern",
"Volunteer",
"Board member",
"Recruiter",
"Civil servant"
]
},
{
"field_name": "Language",
"search_parameter": "languageFilter",
"type": "array",
"possible_values": [
"English",
"German",
"French",
"Spanish",
"Italian",
"Russian",
"Turkish",
"Chinese",
"Arabic",
"Dutch"
]
},
{
"field_name": "Country",
"search_parameter": "countryFilter",
"type": "array",
"possible_values": [
"Austria",
"China",
"Germany",
"India",
"Italy",
"Spain",
"Switzerland",
"Turkey",
"United Kingdom",
"United States of America"
]
}
]
Get Xing leads
Search for highly targeted Xing leads in one call.
HTTP Request
POST https://api.v2.xingzap.com/search
A request using only keywords
[
{
"firstName": "Harish",
"lastName": "Govindarajalu",
"fullName": "Harish Govindarajalu",
"title": "Strategic Business Analyst",
"location": "Berlin, Germany",
"previousTitle": "",
"company": "Apar Technologies",
"xingId": "35511063.e8307c",
"pageName": "Harish_Govindarajalu2"
},
{
"firstName": "Dvir",
"lastName": "Lifshits",
"fullName": "Dvir Lifshits",
"title": "Online Marketing & Growth Consultant - Hands-On Expert",
"location": "Berlin, Germany",
"previousTitle": "Acquisition/Growth Team Leader (Social)",
"company": "Dvir Lifshits Online Marketing",
"xingId": "34834626.d2ff1d",
"pageName": "Dvir_Lifshits"
}
]
A request using a searchUrl looks like this:
import requests
response = requests.post("https://api.v2.xingzap.com/search",
json={
"searchUrl":"https://www.xing.com/search/members?keywords=anas%20el%20mhamdi"
},
headers= {
'X-Api-Key':'XINGZAP_API_KEY'
}
)
curl --location --request POST 'https://api.v2.xingzap.com/scrap' \
-H 'X-Api-Key: XINGZAP_API_KEY'
--data-raw '{
"searchUrl":"https://www.xing.com/search/members?keywords=anas%20el%20mhamdi"
}'
Parameter | Required | Default | Description |
---|---|---|---|
keywords | One of keywords or searchUrl | Keywords to search for leads in Xing | |
searchUrl | One of keywords or searchUrl | Required if no other parameters are used. The search URL must contain the keywords query parameter. | |
any searchable field | No | Any search_parameter from the /scrap/fields route |
Scrap
Scrap a single profile
Scrapes the public information of a given pageName
or Xing profileUrl
.
HTTP Request
POST https://api.v2.xingzap.com/scrap
import requests
response = requests.post("https://api.v2.xingzap.com/scrap",
json={
"pageName":"Anas_ElMhamdi"
},
headers= {
'X-Api-Key':'XINGZAP_API_KEY'
}
)
curl --location --request POST 'https://api.v2.xingzap.com/scrap' \
-H 'X-Api-Key: XINGZAP_API_KEY'
--data-raw '{
"pageName":"Anas_ElMhamdi"
}'
A request using a profileUrl looks like this:
import requests
response = requests.post("https://api.v2.xingzap.com/scrap",
json={
"profileUrl":"https://www.xing.com/profile/Anas_ElMhamdi/cv"
},
headers= {
'X-Api-Key':'XINGZAP_API_KEY'
}
)
curl --location --request POST 'https://api.v2.xingzap.com/scrap' \
-H 'X-Api-Key: XINGZAP_API_KEY'
--data-raw '{
"profileUrl":"https://www.xing.com/profile/Anas_ElMhamdi/cv"
}'
Request parameters
Parameter | Required | Description |
---|---|---|
pageName | One of pageName or profileUrl | The shorthand name for a Xing profile |
profileUrl | One of pageName or profileUrl | A Xing profile URL |
Response description
Response parameter | Description |
---|---|
fullName | The user's full name |
currentPosition | A list of the current positions held by the users |
workPositionTimeline | A list of all the positions held by the users |
description | the user's about section (if available) |
private | A boolean indicating the user's profile is private |
premiumProfile | A boolean indicating the user's profile is a user of Xing Premium |
profileImg | The user's Xing avatar |
xingUrl | The user's Xing URL |
The scraped data is sent in response:
{
"fullName": "Anas El Mhamdi",
"currentPosition": [
{
"jobtitle": "CEO",
"company": "XingZap",
"date": "8 months, since May 2021"
},
{
"jobtitle": "Growth Engineer",
"company": "Quable",
"date": "1 year and 3 months, since Oct 2020"
}
],
"workPositionTimeline": [
{
"jobtitle": "CEO",
"company": "XingZap",
"date": "8 months, since May 2021",
"startDate": "May 2021",
"endDate": null,
"daysInPosition": 240
},
{
"jobtitle": "Growth engineer",
"company": "Quable",
"date": "1 year and 3 months, since Oct 2020",
"startDate": "Oct 2020",
"endDate": null,
"daysInPosition": 452
}
],
"description": "I'm a growth engineer with a mission of making marketing exciting !\n\nI'm also the co-founder of XingZap, the only Xing automation tool of the market :)\n \nContact me for more information !",
"profileImg": "https://profile-images.xing.com/images/441458d2037e2bd7e33de0b693ef528d-1/anas-el-mhamdi.256x256.jpg",
"xingUrl": "https://xing.com/profile/Anas_ElMhamdi",
"private": false,
"premiumProfile": true
}
Errors
The XingZap API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
429 | Too Many Requests -- You're exceeding the rate limit |
500 | Internal Server Error -- We had a problem with our server. Please contact us ! |