Returns matching listings with the filter vocabulary that produced them. Every entry in that vocabulary is a parameter this endpoint accepts, and every value it lists is one that parameter will take. A filter value is validated against the upstream catalog before the request is sent, so an unsupported filter is rejected instead of returning a silently unfiltered or empty result — and an unrecognised parameter is rejected rather than ignored.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
This endpoint has no required query parameters.
12 optional filters available.
string
Optional
venta (sale), alquiler (rent) or alquiler_temporal (short-term rental). Default venta.
alquiler
string
Optional
Restrict to a country, for example argentina or uruguay.
argentina
integer
Optional
1-based page number, 1 to 30000. start is (page - 1) x rows, so the deepest offset this reaches is (30000 - 1) x rows — beyond the entire measured inventory (556,435 listings, 244,746 agencies) at the default rows of 20. That inventory is not reachable at every rows value: past the ceiling with rows still on the table, matches remain behind the client, and the response then says so under next.page_ceiling_reached. A page beyond the ceiling is refused with a 422 rather than sent upstream.
1
integer
Optional
Listings per page, 1 to 50. Default 20.
5
integer
Optional
Lower price bound. Requires price_max as well: the upstream interval has no open-ended form, so a lower bound alone is rejected rather than returning an empty page. Sent without a currency id, so the bound is interpreted in the upstream default currency — see the currency block in the response.
10
string
Optional
One of destaque, masnuevos, menorprecio, or mayorprecio. Default destaque. These four are the orderings the upstream actually applies — menorprecio returns ascending prices, mayorprecio descending. Any other value is rejected rather than sent upstream.
relevance
integer
Optional
Upper price bound. Interpreted in the upstream default currency, which the Argenprop API does not publish; the response states this rather than assuming one. Amounts are never converted.
10
string
Optional
con-precio for listings that show a price, sin-precio for those that do not. Any other value is rejected.
example
string
Optional
Restrict by seller, for example dueno-directo or inmobiliaria.
example
string
Optional
Published search region code, for example zona-norte. Listed in the filter catalog returned with every search.
US
string
Optional
Published partido code, for example partido-de-pilar or capital-federal. Every code the server publishes is accepted; a code it does not publish is rejected rather than returning an empty page. When a region is given as well, the partido must belong to it — a cross-region pair is rejected for the same reason.
example
string
Optional
Property type code from the returned filter catalog.
example
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/argenprop/search?operation=alquiler&country=argentina&rows=5",
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/argenprop/search?operation=alquiler&country=argentina&rows=5');
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/argenprop/search?operation=alquiler&country=argentina&rows=5', 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/argenprop/search?operation=alquiler&country=argentina&rows=5',
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/argenprop/search?operation=alquiler&country=argentina&rows=5")
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/argenprop/search?operation=alquiler&country=argentina&rows=5", 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/argenprop/search?operation=alquiler&country=argentina&rows=5', 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/argenprop/search?operation=alquiler&country=argentina&rows=5")
.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/argenprop/search?operation=alquiler&country=argentina&rows=5", 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/argenprop/search?operation=alquiler&country=argentina&rows=5"
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/argenprop/search?operation=alquiler&country=argentina&rows=5"));
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/argenprop/search?operation=alquiler&country=argentina&rows=5',
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/argenprop/search?operation=alquiler&country=argentina&rows=5")
.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
{
"success": true,
"data": {
"results": [],
"total_results": 0,
"page": 1,
"page_size": 5,
"filters": [],
"currency": {
"band_currency": {
"id": null,
"published": false
},
"currencies_in_results": [
"USD"
],
"converted": false,
"catalog": [
{
"Id": 1,
"Descripcion": "Pesos"
}
]
}
}
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Not Found
The requested listing or agency was not found. This response is not billable.
Validation Error
A public parameter, or a filter value outside the published catalog, is invalid. No upstream request is made and this response is not billable.
Service Unavailable
The service could not obtain a complete result from the upstream. This response is not billable.
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.