Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"message_id": "<string>",
"message_text": "<string>",
"message_type": "<string>",
"template_id": "<string>",
"message_sent_at": {},
"direction": "<string>",
"is_outgoing": true,
"is_read": true,
"is_partner_read": true,
"attachments_count": 123,
"attachments": "<any>",
"sender_id": "<string>",
"sender_name": "<string>",
"conversation_id": "<string>",
"conversation_url": "<string>",
"annonce_id": "<string>",
"ad_title": "<string>",
"ad_status": "<string>",
"ad_category_id": "<string>",
"ad_image": "<string>",
"ad_owner_id": "<string>",
"ad_owner_type": "<string>",
"counterparty_id": "<string>",
"counterparty_name": "<string>",
"last_message_sent_at": {},
"last_message_preview": "<string>",
"last_message_attachments_count": 123,
"unseen_counter": 123,
"is_unread": true
}Leboncoin Messages Reader
Get Results
Retrieve scraped data from Leboncoin Messages Reader
GET
/
v1
/
results
Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"message_id": "<string>",
"message_text": "<string>",
"message_type": "<string>",
"template_id": "<string>",
"message_sent_at": {},
"direction": "<string>",
"is_outgoing": true,
"is_read": true,
"is_partner_read": true,
"attachments_count": 123,
"attachments": "<any>",
"sender_id": "<string>",
"sender_name": "<string>",
"conversation_id": "<string>",
"conversation_url": "<string>",
"annonce_id": "<string>",
"ad_title": "<string>",
"ad_status": "<string>",
"ad_category_id": "<string>",
"ad_image": "<string>",
"ad_owner_id": "<string>",
"ad_owner_type": "<string>",
"counterparty_id": "<string>",
"counterparty_name": "<string>",
"last_message_sent_at": {},
"last_message_preview": "<string>",
"last_message_attachments_count": 123,
"unseen_counter": 123,
"is_unread": true
}Retrieve scraped data from your Leboncoin Messages Reader runs. One row per message, with the conversation, the listing and the other party on every row.
Headers
Query Parameters
Result Fields
Message kind as returned by Leboncoin:
ApiTextMessage for a regular message, ApiTemplateMessage for a templated one.Identifier of the Leboncoin message template when the message was sent from a template, empty otherwise.
received when the message was written by the other party, sent when it was written by the connected Leboncoin account.Identifier of the Leboncoin listing the conversation is about. Same identifier as the
annonce_id of the Leboncoin Auto Message Sender, so replies can be joined back to the messages sent.Type of the listing owner,
private for a private seller. Empty when Leboncoin does not return it.Code Examples
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
Response
200
{"total_results": 1, "data": [{"message_id": "b07ce020-6be6-11f1-8080-808080808080", "message_text": "Hello Sasha, toutes les infos utiles sont dans l'annonce !\nMichel.", "message_type": "ApiTextMessage", "message_sent_at": "2026-06-19T13:56:37.282000+00:00", "direction": "received", "is_outgoing": false, "is_read": true, "conversation_id": "c2d7efff-5f3e-4898-8d49-979f94260003", "conversation_url": "https://www.leboncoin.fr/messages/id/c2d7efff-5f3e-4898-8d49-979f94260003", "annonce_id": "3196445542", "ad_title": "Maison individuelle de plein-pied proche Louhans", "counterparty_name": "deschamps"}]}