Map places
curl --request GET \
--url https://api.scraperize.com/v1/lagos-life/places \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/lagos-life/places"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.scraperize.com/v1/lagos-life/places', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scraperize.com/v1/lagos-life/places",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scraperize.com/v1/lagos-life/places"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scraperize.com/v1/lagos-life/places")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/lagos-life/places")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"places": [
{
"id": "lagosAirport",
"name": "Murtala Muhammed International Airport",
"area": "Ikeja",
"city": "lagos",
"emoji": "✈️",
"blurb": "Lagos's airport. Book a flight to Abuja or Port Harcourt at check-in, wait in the lounge, watch the jets take off, or charter a chopper. Private jets park on their own apron.",
"opensAt": 0,
"closesAt": 24
},
{
"id": "jibowuPark",
"name": "Jibowu Motor Park",
"area": "Jibowu, Yaba",
"city": "lagos",
"emoji": "🚌",
"blurb": "The interstate terminals strung along Ikorodu Road at Jibowu: coaches loading for Abuja and Port Harcourt, touts shouting the routes, ewa agoyin by the gate and the night buses rolling out after dark.",
"opensAt": 0,
"closesAt": 24
},
{
"id": "mamaPut",
"name": "Amala Shitta",
"area": "Surulere",
"city": "lagos",
"emoji": "🍲",
"blurb": "Legendary amala, gbegiri & ewedu since 1967. The queue is part of the experience.",
"opensAt": 7,
"closesAt": 22
}
],
"count": 133,
"fetchedAt": "2026-10-09T16:37:10.759Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}Lagos Life
Map places
Fetches the places on the Lagos Life map across Lagos, Abuja and Port Harcourt (e.g. New Afrika Shrine, Quilox, Balogun Market): each place’s name, area, city, emoji, description and opening hours. Takes no parameters. Only publicly available data is returned.
GET
/
v1
/
lagos-life
/
places
Map places
curl --request GET \
--url https://api.scraperize.com/v1/lagos-life/places \
--header 'x-api-key: <api-key>'import requests
url = "https://api.scraperize.com/v1/lagos-life/places"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.scraperize.com/v1/lagos-life/places', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.scraperize.com/v1/lagos-life/places",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.scraperize.com/v1/lagos-life/places"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.scraperize.com/v1/lagos-life/places")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scraperize.com/v1/lagos-life/places")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"places": [
{
"id": "lagosAirport",
"name": "Murtala Muhammed International Airport",
"area": "Ikeja",
"city": "lagos",
"emoji": "✈️",
"blurb": "Lagos's airport. Book a flight to Abuja or Port Harcourt at check-in, wait in the lounge, watch the jets take off, or charter a chopper. Private jets park on their own apron.",
"opensAt": 0,
"closesAt": 24
},
{
"id": "jibowuPark",
"name": "Jibowu Motor Park",
"area": "Jibowu, Yaba",
"city": "lagos",
"emoji": "🚌",
"blurb": "The interstate terminals strung along Ikorodu Road at Jibowu: coaches loading for Abuja and Port Harcourt, touts shouting the routes, ewa agoyin by the gate and the night buses rolling out after dark.",
"opensAt": 0,
"closesAt": 24
},
{
"id": "mamaPut",
"name": "Amala Shitta",
"area": "Surulere",
"city": "lagos",
"emoji": "🍲",
"blurb": "Legendary amala, gbegiri & ewedu since 1967. The queue is part of the experience.",
"opensAt": 7,
"closesAt": 22
}
],
"count": 133,
"fetchedAt": "2026-10-09T16:37:10.759Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required — pass it in the `x-api-key` header.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 1 credit, but your balance is 0. Top up to continue.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded — max 100 requests per 60s. Retry in ~30s.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}{
"error": {
"code": "UPSTREAM_BLOCKED",
"message": "The source is temporarily unavailable. Please try again shortly.",
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f"
}
}Cost: 1 credit per successful request. Errors and cache hits (
cache_max_age) are free.Copy for AI assistant
Copy for AI assistant
Paste this into ChatGPT, Claude or your coding assistant to generate working code for this endpoint (use the copy button).
Prompt
I want to make an API call to /v1/lagos-life/places. Here are the details:
Endpoint: GET https://api.scraperize.com/v1/lagos-life/places
Description: Fetches the places on the Lagos Life map across Lagos, Abuja and Port Harcourt (e.g. New Afrika Shrine, Quilox, Balogun Market): each place's name, area, city, emoji, description and opening hours. Takes no parameters. Only publicly available data is returned.
Required Headers:
- x-api-key: Your API key
Parameters:
- cache_max_age (select): Optional. Return a cached result if one this age or newer exists — served for **0 credits** with `meta.cached=true` and `meta.cachedAt`. Otherwise a fresh scrape runs (**1 credit**) and refreshes the cache. Omit to always scrape fresh.
Example Response:
{
"data": {
"places": [
{
"id": "lagosAirport",
"name": "Murtala Muhammed International Airport",
"area": "Ikeja",
"city": "lagos",
"emoji": "✈️",
"blurb": "Lagos's airport. Book a flight to Abuja or Port Harcourt at check-in, wait in the lounge, watch the jets take off, or charter a chopper. Private jets park on th…",
"opensAt": 0,
"closesAt": 24
}
],
"count": 133,
"fetchedAt": "2026-10-09T16:37:10.759Z"
},
"meta": {
"requestId": "req_8f0c2b7e-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
"creditsCharged": 1,
"creditsRemaining": 4999,
"cached": false
}
}
Please help me write code in my preferred programming language to make this API call and handle the response appropriately. Include error handling and best practices.
Authorizations
Your API key. Send it in the x-api-key header (or Authorization: Bearer <key>). Create and manage keys from your dashboard.
Query Parameters
Optional. Return a cached result if one this age or newer exists — served for 0 credits with meta.cached=true and meta.cachedAt. Otherwise a fresh scrape runs (1 credit) and refreshes the cache. Omit to always scrape fresh.
Available options:
1d, 3d, 7d, 14d, 30d