Web Scraper API documentation
Get to know how Web Scraper API works and integrate it into your app. Examples are provided in Curl, Javascript and Python.
Data Scraping and API Endpoint Integration
https://scrape.infatica.io
Sync API
Sync API allows to receive immediate result using our Residential Proxy
Query Parameters
Name | Description | Example | Options |
---|---|---|---|
url (string, required) | Destination url to retrieve (url-encoded) | {"url":"google.com"} | default=null |
api_key (string, required) | Web Scraper API key | {"api_key":"0de32912321"} | default=null |
country_code (str, optional) | Proxy country code (geolocation) | {"country_code":"fr"} | default=null, options - us, gb, de, fr, cn, jp. View all codes |
render_js (bool, optional) | Render JS on page | {"render_js":"true"} | default=false |
return_json (bool, optional) | Return HTML if flagged "false" | {"return_json": "false"} | default=true |
headers (JSON, optional) | Custom headers | { "headers": {"user-agent": "Example user agent", "accept": "text/html,*/*"} } | default our headers |
language (str, optional) | Language | {"language":"en-US"} | default=en-US, options - en-US, en-CA, es-ES, fr-CA. View all codes |
selector (str, optional) | CSS Selector | {"selector":".className"} , {"selector":"#idName"} | default=null, is only used with render_js . Timeout <= 60 sec. CSS Selector Reference |
Returns
Status code | Description | Example |
---|---|---|
200 (Success) | Request successful. Returns JSON with headers and html fields | {"headers":{}, 'html':""} |
401 (Unauthorized) | API key is missing or wrong | {'error':'API key is missing or wrong'} |
422 (Unprocessable Entity) | Error in query parameters | {'error':'Wrong query'} |
504 (Timeout) | Site returned timeout after 3 attempts to reach it | {'error':'Timeout'} |
'api_key': 'API_KEY'
, where API_KEY is your Infatica API key
Country codes
If you want to define the geolocation for your request, you may set the country_code (string) parameter with one country code at the creation of the request.
Example: 'us'
, 'gb'
, 'fr'
, 'de'
, 'jp'
, 'cn'
, 'ru'
Supported country codes can be found in the collapsible table below:
All country codes (click here to expand)
Code | Country name | Code | Country name | Code | Country name |
---|---|---|---|---|---|
ad | Andorra | gl | Greenland | no | Norway |
ae | United Arab Emirates | gm | Gambia | np | Nepal |
af | Afghanistan | gn | Guinea | nr | Nauru |
ag | Antigua and Barbuda | gp | Guadeloupe | nu | Niue |
ai | Anguilla | gq | Equatorial Guinea | nz | New Zealand |
al | Albania | gr | Greece | om | Oman |
am | Armenia | gs | South Georgia and the South Sandwich Islands | pa | Panama |
ao | Angola | gt | Guatemala | pe | Peru |
aq | Antarctica | gu | Guam | pf | French Polynesia |
ar | Argentina | gw | Guinea-Bissau | pg | Papua New Guinea |
as | American Samoa | gy | Guyana | ph | Philippines |
at | Austria | hk | Hong Kong | pk | Pakistan |
au | Australia | hm | Heard Island and McDonald Islands | pl | Poland |
aw | Aruba | hn | Honduras | pm | Saint Pierre and Miquelon |
ax | Åland Islands | hr | Croatia | pn | Pitcairn |
az | Azerbaijan | ht | Haiti | pr | Puerto Rico |
ba | Bosnia and Herzegovina | hu | Hungary | ps | Palestine, State of |
bb | Barbados | id | Indonesia | pt | Portugal |
bd | Bangladesh | ie | Ireland | pw | Palau |
be | Belgium | il | Israel | py | Paraguay |
bf | Burkina Faso | im | Isle of Man | qa | Qatar |
bg | Bulgaria | in | India | re | Réunion |
bh | Bahrain | io | British Indian Ocean Territory | ro | Romania |
bi | Burundi | iq | Iraq | rs | Serbia |
bj | Benin | ir | Iran (Islamic Republic of) | ru | Russian Federation |
bl | Saint Barthélemy | is | Iceland | rw | Rwanda |
bm | Bermuda | it | Italy | sa | Saudi Arabia |
bn | Brunei Darussalam | je | Jersey | sb | Solomon Islands |
bo | Bolivia (Plurinational State of) | jm | Jamaica | sc | Seychelles |
bq | Bonaire, Sint Eustatius and Saba | jo | Jordan | sd | Sudan |
br | Brazil | jp | Japan | se | Sweden |
bs | Bahamas | ke | Kenya | sg | Singapore |
bt | Bhutan | kg | Kyrgyzstan | sh | Saint Helena, Ascension and Tristan da Cunha |
bv | Bouvet Island | kh | Cambodia | si | Slovenia |
bw | Botswana | ki | Kiribati | sj | Svalbard and Jan Mayen |
by | Belarus | km | Comoros | sk | Slovakia |
bz | Belize | kn | Saint Kitts and Nevis | sl | Sierra Leone |
ca | Canada | kp | Korea (Democratic People's Republic of) | sm | San Marino |
cc | Cocos (Keeling) Islands | kr | Korea, Republic of | sn | Senegal |
cd | Congo, Democratic Republic of the | kw | Kuwait | so | Somalia |
cf | Central African Republic | ky | Cayman Islands | sr | Suriname |
cg | Congo | kz | Kazakhstan | ss | South Sudan |
ch | Switzerland | la | Lao People's Democratic Republic | st | Sao Tome and Principe |
ci | Côte d'Ivoire | lb | Lebanon | sv | El Salvador |
ck | Cook Islands | lc | Saint Lucia | sx | Sint Maarten (Dutch part) |
cl | Chile | li | Liechtenstein | sy | Syrian Arab Republic |
cm | Cameroon | lk | Sri Lanka | sz | Eswatini |
cn | China | lr | Liberia | tc | Turks and Caicos Islands |
co | Colombia | ls | Lesotho | td | Chad |
cr | Costa Rica | lt | Lithuania | tf | French Southern Territories |
cu | Cuba | lu | Luxembourg | tg | Togo |
cv | Cabo Verde | lv | Latvia | th | Thailand |
cw | Curaçao | ly | Libya | tj | Tajikistan |
cx | Christmas Island | ma | Morocco | tk | Tokelau |
cy | Cyprus | mc | Monaco | tl | Timor-Leste |
cz | Czechia | md | Moldova, Republic of | tm | Turkmenistan |
de | Germany | me | Montenegro | tn | Tunisia |
dj | Djibouti | mf | Saint Martin (French part) | to | Tonga |
dk | Denmark | mg | Madagascar | tr | Türkiye |
dm | Dominica | mh | Marshall Islands | tt | Trinidad and Tobago |
do | Dominican Republic | mk | North Macedonia | tv | Tuvalu |
dz | Algeria | ml | Mali | tw | Taiwan, Province of China |
ec | Ecuador | mm | Myanmar | tz | Tanzania, United Republic of |
ee | Estonia | mn | Mongolia | ua | Ukraine |
eg | Egypt | mo | Macao | ug | Uganda |
eh | Western Sahara | mp | Northern Mariana Islands | um | United States Minor Outlying Islands |
er | Eritrea | mq | Martinique | us | United States of America |
es | Spain | mr | Mauritania | uy | Uruguay |
et | Ethiopia | ms | Montserrat | uz | Uzbekistan |
fi | Finland | mt | Malta | va | Holy See |
fj | Fiji | mu | Mauritius | vc | Saint Vincent and the Grenadines |
fk | Falkland Islands (Malvinas) | mv | Maldives | ve | Venezuela (Bolivarian Republic of) |
fm | Micronesia (Federated States of) | mw | Malawi | vg | Virgin Islands (British) |
fo | Faroe Islands | mx | Mexico | vi | Virgin Islands (U.S.) |
fr | France | my | Malaysia | vn | Viet Nam |
ga | Gabon | mz | Mozambique | vu | Vanuatu |
gb | United Kingdom of Great Britain and Northern Ireland | na | Namibia | wf | Wallis and Futuna |
gd | Grenada | nc | New Caledonia | ws | Samoa |
ge | Georgia | ne | Niger | ye | Yemen |
gf | French Guiana | nf | Norfolk Island | yt | Mayotte |
gg | Guernsey | ng | Nigeria | za | South Africa |
gh | Ghana | ni | Nicaragua | zm | Zambia |
gi | Gibraltar | nl | Netherlands | zw | Zimbabwe |
You're also free to pass your own headers set to the request
Language codes
If you want to define the language in your request, you may set the language
(string) parameter with one language tag at the creation of the request.
Language codes can be found in the collapsible table below:
All language codes/tags (click here to expand)
Language Tag | Language | Region | Description |
---|---|---|---|
ar-SA | Arabic | Saudi Arabia | Arabic (Saudi Arabia) |
bn-BD | Bangla | Bangladesh | Bangla (Bangladesh) |
bn-IN | Bangla | India | Bangla (India) |
cs-CZ | Czech | Czech Republic | Czech (Czech Republic) |
da-DK | Danish | Denmark | Danish (Denmark) |
de-AT | German | Austria | Austrian German |
de-CH | German | Switzerland | "Swiss" German |
de-DE | German | Germany | Standard German (as spoken in Germany) |
el-GR | Greek | Greece | Modern Greek |
en-AU | English | Australia | Australian English |
en-CA | English | Canada | Canadian English |
en-GB | English | United Kingdom | British English |
en-IE | English | Ireland | Irish English |
en-IN | English | India | Indian English |
en-NZ | English | New Zealand | New Zealand English |
en-US | English | United States | US English |
en-ZA | English | South Africa | English (South Africa) |
es-AR | Spanish | Argentina | Argentine Spanish |
es-CL | Spanish | Chile | Chilean Spanish |
es-CO | Spanish | Columbia | Colombian Spanish |
es-ES | Spanish | Spain | Castilian Spanish (as spoken in Central-Northern Spain) |
es-MX | Spanish | Mexico | Mexican Spanish |
es-US | Spanish | United States | American Spanish |
fi-FI | Finnish | Finland | Finnish (Finland) |
fr-BE | French | Belgium | Belgian French |
fr-CA | French | Canada | Canadian French |
fr-CH | French | Switzerland | "Swiss" French |
fr-FR | French | France | Standard French (especially in France) |
he-IL | Hebrew | Israel | Hebrew (Israel) |
hi-IN | Hindi | India | Hindi (India) |
hu-HU | Hungarian | Hungary | Hungarian (Hungary) |
id-ID | Indonesian | Indonesia | Indonesian (Indonesia) |
it-CH | Italian | Switzerland | "Swiss" Italian |
it-IT | Italian | Italy | Standard Italian (as spoken in Italy) |
ja-JP | Japanese | Japan | Japanese (Japan) |
ko-KR | Korean | Republic of Korea | Korean (Republic of Korea) |
nl-BE | Dutch | Belgium | Belgian Dutch |
nl-NL | Dutch | The Netherlands | Standard Dutch (as spoken in The Netherlands) |
no-NO | Norwegian | Norway | Norwegian (Norway) |
pl-PL | Polish | Poland | Polish (Poland) |
pt-BR | Portugese | Brazil | Brazilian Portuguese |
pt-PT | Portugese | Portugal | European Portuguese (as written and spoken in Portugal) |
ro-RO | Romanian | Romania | Romanian (Romania) |
ru-RU | Russian | Russian Federation | Russian (Russian Federation) |
sk-SK | Slovak | Slovakia | Slovak (Slovakia) |
sv-SE | Swedish | Sweden | Swedish (Sweden) |
ta-IN | Tamil | India | Indian Tamil |
ta-LK | Tamil | Sri Lanka | Sri Lankan Tamil |
th-TH | Thai | Thailand | Thai (Thailand) |
tr-TR | Turkish | Turkey | Turkish (Turkey) |
zh-CN | Chinese | China | Mainland China, simplified characters |
zh-HK | Chinese | Hond Kong | Hong Kong, traditional characters |
zh-TW | Chinese | Taiwan | Taiwan, traditional characters |
Curl
curl -X POST "https://scrape.infatica.io/" -d '{"api_key": "API_KEY", "url": "https://www.google.com"}'
Curl (with headers)
curl -X POST "https://scrape.infatica.io/" -d '{
"api_key": "API_KEY",
"url": "https://www.google.com",
"headers": {
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Sec-Fetch-Site": "none",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-User": "?1",
"Sec-Fetch-Dest": "document",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-US,en;q=0.9"
}
}'
If you’re trying to set your own headers - please make sure to pass all the necessary values including user agent in the correct order. In this case your target server will receive your headers without any modifications from our side. Setting incorrect headers might cause unexpected page results. Please use this only if you know what you are doing.
Python
import requests
import json
req = requests.post('https://scrape.infatica.io/', data = json.dumps({
'url': 'TARGET_URL',
'api_key': 'API_KEY',
'country_code': 'us', # country_code parameter is optional
'headers': { # headers parameter is optional
'user_header_1': 'header1_value',
'user_header_2': 'header2_value'
}
}))
content = json.loads(req.content)
print(content)
Javascript / NodeJS
const axios = require('axios')
const options = {
method: 'POST',
responseType: 'json',
data: {
url: 'TARGET_URL',
api_key: 'API_KEY',
country_code: 'gb' // country_code parameter is optional
},
url: 'https://scrape.infatica.io'
}
axios(options)
.then((result) => {
console.log(result)
})
.catch((err) => {
console.error(err)
})
Async API
Async API allows to put multiple time-consuming requests to the queue and receive the results as soon as they are getting ready
POST https://scrape.infatica.io/job
Payload parameters
Payload parameters you can find here in table.
Returns
Status code | Description | Example |
---|---|---|
200 (Success) | Request successful. Returns JSON with headers and html fields | {"id":'result_id'} |
401 (Unauthorized) | API key is missing or wrong | {'error':'API key is missing or wrong'} |
422 (Unprocessable Entity) | Error in query parameters | {'error':'Wrong query'} |
504 (Timeout) | Site returned timeout after 3 attempts to reach it | {'error':'Timeout'} |
Curl
curl -X POST -d '{"api_key": "API_KEY", "url": "http://httpbin.org/ip"}' "https://scrape.infatica.io/job"
Python
import requests
import json
req = requests.post('https://scrape.infatica.io/job', data = json.dumps({
'url': 'TARGET_URL',
'api_key': 'API_KEY',
'country_code': 'us', # country_code parameter is optional
'headers': { # headers parameter is optional
'user_header_1': 'header1_value',
'user_header_2': 'header2_value'
}
}))
content = json.loads(req.content)
print(content)
Javascript / NodeJS
const axios = require('axios')
const options = {
method: 'POST',
responseType: 'json',
data: {
url: 'TARGET_URL',
api_key: 'API_KEY',
country_code: 'gb' //country_code parameter is optional
},
url: 'https://scrape.infatica.io/job'
}
axios(options)
.then((result) => {
console.log(result)
})
.catch((err) => {
console.error(err)
})
Async API - receiving results
POST https://scrape.infatica.io/job/<job_id>
Path Parameters
Name | Description | Example | Options |
---|---|---|---|
job_id (string, required) | Job ID | https://scrape.infatica.io/job/0de32912321 | default=null |
Payload Parameters
Name | Description | Example | Options |
---|---|---|---|
api_key (string, required) | Web Scraper API key | {"api_key":"0de32912321"} | default=null |
Returns
Status code | Description | Example |
---|---|---|
200 (Success) | Request successful. Returns JSON with headers and html fields | { <br/> "status":"running", <br/> "statusUrl":"https://scrape.infatica.io/job/0962a8a0-5f1a-4e14-bf8c-5efcc18f1953", <br/> "url":"http://httpbin.org/ip" <br/> } |
401 (Unauthorized) | API key is missing or wrong | {'error':'API key is missing or wrong'} |
422 (Unprocessable Entity) | Error in query parameters | {'error':'Wrong query'} |
504 (Timeout) | Site returned timeout after 3 attempts to reach it | {'error':'Timeout'} |
Curl
curl -X POST -d '{"api_key": "API_KEY"}' "https://scrape.infatica.io/job/<job_id>"
Python
import requests
import json
req = requests.post('https://scrape.infatica.io/job/<job_id>', data = json.dumps({
'api_key': 'API_KEY'}))
content = json.loads(req.content)
print(content)
Javascript / NodeJS
const axios = require('axios')
const options = {
method: 'POST',
responseType: 'json',
data: {
api_key: 'API_KEY',
},
url: 'https://scrape.infatica.io/job/<job_id>'
}
axios(options)
.then((result) => {
console.log(result)
})
.catch((err) => {
console.error(err)
})
Credits and Requests
Your plan determines how many credits you can use. Each request you make costs some credits. The number of credits you use varies based on the domain and parameters of your request. Geotargeting is included in these credit costs.
Domains
We have built special scrapers for some sites. These scrapers will run when you scrape those domains, changing the credit cost. Scraping other domains costs 1 credit (without additional parameters).
Category | Normal | E-commerce | SERP |
---|---|---|---|
credit cost | 1 | 10 | 10 |
with render_js | 10 | 20 | 20 |
Normal - any other website if no additional parameters are added;
SERP - Google;
Ecommerce - Amazon, Booking;
LinkedIn - the cost will be 130 credits per request.
List will be updated as functionality is added.
Paid query parameters
These parameters provide you with additional features for the scraping.
{"render_js":"true"}
– requests cost 10 credits.