Redfin 'For Rent' Listings API: Async Structured Data in Java
Scrape Redfin For Rent pages into structured JSON/CSV using ScraperAPI async in Java. Supports URL, country code, TLD, and raw data options for flexible scraping.
This endpoint will retrieve listing information from a single 'For Rent' property listing page and transform it into usable JSON.
Single query request:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
try {
String apiKey = "API_KEY";
String jsonInputString = "{"
+ "\"apiKey\": \"" + apiKey + "\", "
+ "\"url\": \"URL\", "
+ "\"country_code\": \"COUNTRY_CODE\", "
+ "\"tld\": \"TLD\", "
+ "\raw\": \"RAW\", "
+ "\"callback\": {"
+ " \"type\": \"webhook\", "
+ " \"url\": \"YYYYY\""
+ "}}";
URL url = new URL("https://async.scraperapi.com/structured/redfin/forrent");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "*/*");
connection.setDoOutput(true);
try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
int responseCode = connection.getResponseCode();
StringBuilder response = new StringBuilder();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String readLine;
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
if (responseCode == HttpURLConnection.HTTP_OK) {
System.out.println("Response: " + response.toString());
} else {
throw new Exception("Error in API Call: Response code " + responseCode + "\nbody: " + response.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Multiple query request:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
try {
String apiKey = "API_KEY";
String jsonInputString = "{"
+ "\"apiKey\": \"" + apiKey + "\", "
+ "\"urls\": [\"URL1\", \"URL2\"], "
+ "\"country_code\": \"COUNTRY_CODE\", "
+ "\"tld\": \"TLD\", "
+ "\raw\": \"RAW\", "
+ "\"callback\": {"
+ " \"type\": \"webhook\", "
+ " \"url\": \"YYYYY\""
+ "}}";
URL url = new URL("https://async.scraperapi.com/structured/redfin/forrent");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "*/*");
connection.setDoOutput(true);
try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
int responseCode = connection.getResponseCode();
StringBuilder response = new StringBuilder();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String readLine;
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
if (responseCode == HttpURLConnection.HTTP_OK) {
System.out.println("Response: " + response.toString());
} else {
throw new Exception("Error in API Call: Response code " + responseCode + "\nbody: " + response.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
API_KEY
(required)
User's API Key.
URL
(required)
The URL of the Redfin page. The URL has to be the URL of a property for rent.
country_code
Allows you to geotarget the request. Use this parameter if you want Redfin to be scraped from a specific country.
TLD
raw
This is a boolean param - true
or false
If the raw
parameter is set to true
, the raw data will be extracted from the page without further parsing.
Important:
The structure of the data in raw mode cannot be guaranteed, it’s a tradeoff: You get a lot more information back, but the structure of the response may change if Redfin
modifies their page layout.
Sample Response
For single query requests:
{
"id": "aa65d866-b53f-4488-9cbe-2bee29d6f65c",
"status": "running",
"statusUrl": "https://async.scraperapi.com/jobs/aa65d866-b53f-4488-9cbe-2bee29d6f65c",
"url": "https://www.redfin.com/MD/Baltimore/2803-Fait-Ave-21224/home/10736273",
}
For multiple query requests:
[
{
"id": "6d282e78-4d1a-46cb-838f-cc59e592774f",
"attempts": 0,
"status": "running",
"statusUrl": "https://async.scraperapi.com/jobs/6d282e78-4d1a-46cb-838f-cc59e592774f",
"url": "https://www.redfin.com/MD/Baltimore/2803-Fait-Ave-21224/home/10736273"
},
{
"id": "d59ed100-6213-4097-afe5-6488ec5dda12",
"attempts": 0,
"status": "running",
"statusUrl": "https://async.scraperapi.com/jobs/d59ed100-6213-4097-afe5-6488ec5dda12",
"url": "https://www.redfin.com/MD/Baltimore/2803-Fait-Ave-21224/home/10736273"
}
]
After the job(s) finish, you will find the result under the response key in the response
JSON object. The structure is the same as in the corresponding SYNC data endpoint.
Last updated
Was this helpful?