Scrappa's GET /api/lankapropertyweb/listing returns the full record of one LankaPropertyWeb listing as structured JSON.
What you get
title, property_type, price, price_label, price_period, alternative_price (the dollar price when the site shows one), price_per_sqft, bedrooms, bathrooms, floor_area, land_size, floors, parking_spaces, furnishing, availability, construction_status, reference, and for land offered_for, land_shape, road_frontage and road_width. overview lists every label and value of the site's overview table. You also get the full description as plain text, features, address, coordinates, the full images gallery, posted and the agent with the agency link.
Type is required
Take id and type from a search result. The site keeps sale, rent and land listings in separate sections, so a wrong type returns 404, which is never billed.
Privacy
Phone numbers and WhatsApp numbers are never returned.
Notes
A field the site does not state is null. A price on request is null.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
integer
Required
Listing id from search, for example 5507299.
5507299
string
Required
sale, rent or land. Take it from the search result.
sale
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale",
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: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/lankapropertyweb/listing?id=5507299&type=sale", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/lankapropertyweb/listing?id=5507299&type=sale")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
success
data
meta
{
"success": true,
"data": {
"id": "5507299",
"type": "sale",
"url": "https://www.lankapropertyweb.com/sale/property_details-5507299.html",
"title": "3br Brand New Canterbury Golf Apartment For Sale At Kahathuduwa",
"property_type": "Apartment",
"price": 27000000,
"price_label": "Rs. 27,000,000",
"price_period": null,
"price_qualifier": null,
"currency": "LKR",
"alternative_price": null,
"price_per_sqft": 28541,
"bedrooms": 3,
"bathrooms": 2,
"floor_area": {
"value": 946,
"unit": "sqft"
},
"land_size": null,
"availability": "Available Now",
"construction_status": "Ready to move in",
"reference": "SA 1297",
"overview": [
{
"label": "Property Type",
"value": "Apartment"
},
{
"label": "Bedrooms",
"value": "3"
}
],
"description": "Our Reference No:- SA 1297\n(Please quote this reference number when inquiring)",
"features": [],
"address": {
"text": "Kahathuduwa"
},
"coordinates": {
"latitude": 6.769539,
"longitude": 80.010597
},
"images": [
{
"url": "https://www.lankapropertyweb.com/pics/5507299/5507299_1688647675_4007.jpeg"
}
],
"posted": "68 days ago",
"agent": {
"id": "17540",
"name": "Bimsara Real Estate",
"type": "Agent",
"agency": {
"slug": "bimsara-real-estate-5353483",
"id": 5353483,
"url": "https://www.lankapropertyweb.com/agents/bimsara-real-estate-5353483"
}
}
},
"meta": {
"endpoint_family": "listing",
"billable": true
}
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Not Found
No LankaPropertyWeb listing has that id in the requested section. Check the id and the type. (`NOT_FOUND`). Non-billable.
{
"meta": {
"billable": false,
"retryable": false,
"endpoint_family": "listing"
},
"error": {
"code": "NOT_FOUND",
"message": "No LankaPropertyWeb listing has that id in the requested section. Check the id and the type."
},
"success": false
}Validation Error
A query parameter is missing, unknown or unusable. Unknown parameters and unknown values are rejected before any lookup, never ignored. Non-billable.
{
"errors": {
"type": [
"The selected type is invalid."
]
},
"message": "The selected type is invalid."
}Upstream Unavailable
LankaPropertyWeb could not be reached after retries, answered with an error or changed its format (`UPSTREAM_UNAVAILABLE`). Retryable and never billed. Clients are never rate limited.
{
"meta": {
"billable": false,
"retryable": true,
"endpoint_family": "listing"
},
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "LankaPropertyWeb is temporarily unavailable. Please retry."
},
"success": false
}Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.