Home · Developers · Code samples
Code samples
Copy-paste starters
for 9 stacks.
Working code in Python, Node.js, Next.js, React, Vue, Go, Rails, Django, Laravel — each runs Maps Scraper and prints the result.
Working code in Python, Node.js, Next.js, React, Vue, Go, Rails, Django, Laravel — each runs Maps Scraper and prints the result.
Copy-pasteable starters for the 9 most-used stacks. Each example runs Maps Scraper, polls for completion, prints the rows. Replace YOUR_KEY with a real key from /app-api.html.
pip install livescraper
from livescraper import Client
client = Client(api_key="YOUR_KEY")
task = client.maps.run(
query="dental clinics",
location="Houston, TX",
radius_km=8,
max_rows=200,
)
rows = task.wait().rows()
print(f"{len(rows)} rows · {task.credits_used} credits")
npm install @livescraper/sdk
import Livescraper from "@livescraper/sdk";
const client = new Livescraper({ apiKey: process.env.LS_KEY });
const task = await client.maps.run({
query: "dental clinics",
location: "Houston, TX",
radiusKm: 8,
maxRows: 200,
});
const rows = await task.rows();
console.log(`${rows.length} rows · ${task.creditsUsed} credits`);
// app/api/scrape/route.ts
import Livescraper from "@livescraper/sdk";
import { NextResponse } from "next/server";
export async function POST(req: Request) {
const { query, city } = await req.json();
const client = new Livescraper({ apiKey: process.env.LS_KEY! });
const task = await client.maps.run({
query, location: city, radiusKm: 8, maxRows: 200,
});
const rows = await task.rows();
return NextResponse.json({ rows, credits: task.creditsUsed });
}
// useScrape.ts — server-action style
import { useState } from "react";
export function useScrape() {
const [rows, setRows] = useState<any[]>([]);
const [loading, setLoading] = useState(false);
const run = async (query: string, city: string) => {
setLoading(true);
const r = await fetch("/api/scrape", {
method: "POST",
body: JSON.stringify({ query, city }),
});
const data = await r.json();
setRows(data.rows);
setLoading(false);
};
return { rows, loading, run };
}
<script setup>
import { ref } from 'vue'
const rows = ref([])
const loading = ref(false)
async function run(query, city) {
loading.value = true
const r = await fetch('/api/scrape', {
method: 'POST',
body: JSON.stringify({ query, city })
})
const data = await r.json()
rows.value = data.rows
loading.value = false
}
</script>
go get github.com/livescraper/livescraper-go
import (
"context"
"github.com/livescraper/livescraper-go"
)
client := livescraper.New(os.Getenv("LS_KEY"))
task, err := client.Maps.Run(ctx, livescraper.MapsRequest{
Query: "dental clinics",
Location: "Houston, TX",
RadiusKm: 8,
MaxRows: 200,
})
rows, err := task.Wait().Rows()
# Gemfile
gem 'livescraper-ruby'
# app/services/scrape_service.rb
client = Livescraper::Client.new(api_key: ENV['LS_KEY'])
task = client.maps.run(
query: "dental clinics",
location: "Houston, TX",
radius_km: 8,
max_rows: 200,
)
rows = task.wait.rows
puts "#{rows.size} rows · #{task.credits_used} credits"
# scrapes/views.py
from livescraper import Client
from django.http import JsonResponse
def scrape(request):
client = Client(api_key=settings.LS_KEY)
task = client.maps.run(
query=request.POST['query'],
location=request.POST['city'],
radius_km=8,
max_rows=200,
)
rows = task.wait().rows()
return JsonResponse({"rows": rows, "credits": task.credits_used})
// composer require livescraper/livescraper-php
// app/Http/Controllers/ScrapeController.php
use Livescraper\Client;
public function run(Request $request) {
$client = new Client(env('LS_KEY'));
$task = $client->maps->run([
'query' => $request->query,
'location' => $request->city,
'radius_km' => 8,
'max_rows' => 200,
]);
$rows = $task->wait()->rows();
return response()->json(['rows' => $rows]);
}