Skip to content
Scrappa Get API key
Argenprop API 1 credit/request

Argenprop Search

GET https://scrappa.co/api/argenprop/search?operation=alquiler&country=argentina&rows=5

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.

Argenprop Search 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/argenprop/search?operation=alquiler&country=argentina&rows=5
Auth header
x-api-key
Cost
1 credit/request
Response preview
200 OK
{
    "success": true,
    "data": {
        "results": [],
        "total_results": 0,
        "page": 1,
        "page_size": 5,
        "filters": [],
        "currency": {
            "band_currency": {
                "id": null,
                "published": false
            },
            "currencies_in_results": [
...

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.

operation string Optional

venta (sale), alquiler (rent) or alquiler_temporal (short-term rental). Default venta.

Example value alquiler
country string Optional

Restrict to a country, for example argentina or uruguay.

Example value argentina
page 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.

Example value 1
rows integer Optional

Listings per page, 1 to 50. Default 20.

Example value 5
price_min 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.

Example value 10
sort 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.

Example value relevance
price_max 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.

Example value 10
price_availability string Optional

con-precio for listings that show a price, sin-precio for those that do not. Any other value is rejected.

Example value example
seller_type string Optional

Restrict by seller, for example dueno-directo or inmobiliaria.

Example value example
region string Optional

Published search region code, for example zona-norte. Listed in the filter catalog returned with every search.

Example value US
partido 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 value example
property_type string Optional

Property type code from the returned filter catalog.

Example value example

Request Examples

PHP
<?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
<?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();
}
JavaScript
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));
JavaScript
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);
}
Ruby
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
Python
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()
Python
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}")
Java
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());
        }
    }
}
Go
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))
}
Terminal
#!/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"
C#
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}");
        }
    }
}
TypeScript
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();
RUST
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
JSON Response
200 OK
{
    "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.