Build lead lists, run local SEO audits, and power competitor intelligence for any industry. Returns title, type, address, latitude/longitude, website, phone, working hours, rating, reviews count, description, price level, service options, place/data IDs, and extractable email addresses.
This scraper job is asynchronous. You’ll receive a jobId, and can fetch results via polling or webhook delivery.
Request Cost
Each row of data returned consumes 3 credits from your balance.
Credits are deducted only for successful rows.
Example Request
cURL
Node.js
Python
PHP
Java
C#
Ruby
Rust
Go
curl --request POST \
--url 'https://api.hasdata.com/scrapers/google-maps/jobs' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your-api-key>' \
--data '{"limit":100,"categories":["doctor","dentist","physical therapist","psychologist","pediatrician"],"locations":[],"extractEmails":false}'
const axios = require ( 'axios' ). default ;
const options = {
method: 'POST' ,
url: 'https://api.hasdata.com/scrapers/google-maps/jobs' ,
headers: { 'Content-Type' : 'application/json' , 'x-api-key' : '<your-api-key>' },
data: {
limit: 100 ,
categories: [ 'doctor' , 'dentist' , 'physical therapist' , 'psychologist' , 'pediatrician' ],
locations: [],
extractEmails: false
}
};
try {
const { data } = await axios . request ( options );
console . log ( data );
} catch ( error ) {
console . error ( error );
}
import requests
url = "https://api.hasdata.com/scrapers/google-maps/jobs"
payload = {
"limit" : 100 ,
"categories" : [ "doctor" , "dentist" , "physical therapist" , "psychologist" , "pediatrician" ],
"locations" : [],
"extractEmails" : False
}
headers = {
"Content-Type" : "application/json" ,
"x-api-key" : "<your-api-key>"
}
response = requests.post(url, json = payload, headers = headers)
print (response.json())
<? php
$payload = [
"limit" => 100 ,
"categories" => [ "doctor" , "dentist" , "physical therapist" , "psychologist" , "pediatrician" ],
"locations" => [],
"extractEmails" => false ,
];
$curl = curl_init ();
curl_setopt_array ( $curl , [
CURLOPT_URL => "https://api.hasdata.com/scrapers/google-maps/jobs" ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_CUSTOMREQUEST => "POST" ,
CURLOPT_POSTFIELDS => json_encode ( $payload ),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json" ,
"x-api-key: <your-api-key>" ,
],
]);
$response = curl_exec ( $curl );
curl_close ( $curl );
echo $response ;
OkHttpClient client = new OkHttpClient ();
MediaType mediaType = MediaType . parse ( "application/json" );
String json = """
{
"limit": 100,
"categories": [
"doctor",
"dentist",
"physical therapist",
"psychologist",
"pediatrician"
],
"locations": [],
"extractEmails": false
}
""" ;
RequestBody requestBody = RequestBody . create (json, mediaType);
Request request = new Request. Builder ()
. url ( "https://api.hasdata.com/scrapers/google-maps/jobs" )
. post (requestBody)
. addHeader ( "Content-Type" , "application/json" )
. addHeader ( "x-api-key" , "<your-api-key>" )
. build ();
Response response = client . newCall (request). execute ();
using System . Net . Http ;
using System . Text ;
var client = new HttpClient ();
var json = """
{
"limit": 100,
"categories": [
"doctor",
"dentist",
"physical therapist",
"psychologist",
"pediatrician"
],
"locations": [],
"extractEmails": false
}
""" ;
var content = new StringContent ( json , Encoding . UTF8 , "application/json" );
var request = new HttpRequestMessage ( new HttpMethod ( "POST" ), "https://api.hasdata.com/scrapers/google-maps/jobs" )
{
Content = content ,
};
request . Headers . Add ( "x-api-key" , "<your-api-key>" );
using var response = await client . SendAsync ( request );
response . EnsureSuccessStatusCode ();
var body = await response . Content . ReadAsStringAsync ();
Console . WriteLine ( body );
require 'net/http'
require 'uri'
require 'json'
uri = URI ( "https://api.hasdata.com/scrapers/google-maps/jobs" )
payload = {
"limit" => 100 ,
"categories" => [ "doctor" , "dentist" , "physical therapist" , "psychologist" , "pediatrician" ],
"locations" => [],
"extractEmails" => false ,
}
http = Net :: HTTP . new (uri. host , uri. port )
http. use_ssl = true
request = Net :: HTTP :: Post . new (uri)
request[ "Content-Type" ] = 'application/json'
request[ "x-api-key" ] = '<your-api-key>'
request. body = payload. to_json
response = http. request (request)
puts response. read_body
use reqwest :: blocking :: Client ;
use serde_json :: json;
fn main () -> Result <(), Box < dyn std :: error :: Error >> {
let client = Client :: new ();
let payload = json! ({
"limit" : 100 ,
"categories" : [
"doctor" ,
"dentist" ,
"physical therapist" ,
"psychologist" ,
"pediatrician"
],
"locations" : [],
"extractEmails" : false
});
let res = client
. post ( "https://api.hasdata.com/scrapers/google-maps/jobs" )
. header ( "Content-Type" , "application/json" )
. header ( "x-api-key" , "<your-api-key>" )
. json ( & payload )
. send () ?
. text () ? ;
println! ( "{}" , res );
Ok (())
}
package main
import (
" bytes "
" fmt "
" io "
" net/http "
)
func main () {
payload := [] byte ( `{
"limit": 100,
"categories": [
"doctor",
"dentist",
"physical therapist",
"psychologist",
"pediatrician"
],
"locations": [],
"extractEmails": false
}` )
req , _ := http . NewRequest ( "POST" , "https://api.hasdata.com/scrapers/google-maps/jobs" , bytes . NewBuffer ( payload ))
req . Header . Add ( "Content-Type" , "application/json" )
req . Header . Add ( "x-api-key" , "<your-api-key>" )
res , _ := http . DefaultClient . Do ( req )
defer res . Body . Close ()
responseBody , _ := io . ReadAll ( res . Body )
fmt . Println ( string ( responseBody ))
}
Job Parameters
Data limit (0 - unlimited)
Choose your own keywords or pick from our ready-made categories. If you use our categories, we’ll only gather information from the places in those categories.
Extract emails (10 credits per row)
Supported Enrichments
Request any of the fields below via the enrichments array in your job payload.
ID Title Description Cost per Request emailEmail Address Business email address 5 credits linkedinUrlLinkedIn Profile Business LinkedIn page URL 5 credits facebookUrlFacebook Profile Business Facebook page URL 5 credits instagramUrlInstagram Profile Business Instagram profile URL 5 credits xUrlX (Twitter) Profile Business X profile URL 5 credits revenueRevenue Business revenue 5 credits trafficWebsite Traffic Business website traffic 5 credits fundingFunding Info Business funding information 5 credits foundedFounded Year Business founded year 5 credits
Getting Results
Webhooks Receive real-time updates when your scraper job starts, completes, or collects data.
Results API Use the Results API to fetch your data using the jobId, with support for polling and pagination.
Stopping a Job Cancel an active scraper job early if it’s no longer needed or you want to save credits.