How to Automate Real Estate Property Listings for Instagram & Facebook
Automate property listing visuals for Instagram and Facebook using Orshot. Generate professional real estate marketing images from MLS data with API or no-code tools
Rishi MohanAutomate property listing visuals for Instagram and Facebook using Orshot. Generate professional real estate marketing images from MLS data with API or no-code tools
Rishi MohanYou have 40 active listings. Each one needs an Instagram post, a Facebook ad, an "Open House" story, and a "Just Sold" graphic. That's 160+ images—before you even think about seasonal promotions or price updates
Doing this manually eats hours. Doing it with Orshot takes seconds per listing
This guide shows you how to automate real estate property listing visuals for Instagram and Facebook using Orshot's templates and API
Relevant → Auto-generate Real Estate Banners

An automation that takes your property data (address, price, photos, bedrooms, etc.) and generates ready-to-post social media visuals—automatically
Orshot has ready-to-use real estate templates designed for social media. Browse the collection and pick one that fits your brand
Here's a property sale banner template you can copy to your workspace and start using right away:
Or build your own from scratch using Orshot Studio. You can also import existing designs from Canva or Figma
Open your template in Orshot Studio and make the dynamic fields parameterizable. For a typical property listing, you'll want:
| Field | Parameter Key | Example Value |
|---|---|---|
| Property Image | propertyImage | https://mls.com/photo-123.jpg |
| Price | price | $875,000 |
| Address | address | 123 Oak Avenue, Austin TX |
| Bedrooms | bedrooms | 4 |
| Bathrooms | bathrooms | 3 |
| Square Footage | sqft | 2,400 sq ft |
| Agent Name | agentName | Sarah Johnson |
| Status Badge | status | Just Listed |
To parameterize a field:
Once saved, this template becomes an API endpoint. Every property listing can now generate a unique image by passing different data to the same template

With your template ready, generate images by sending property data to Orshot's Image Generation API
POST https://api.orshot.com/v1/studio/renderasync function generateListingImage(property) {
const response = await fetch("https://api.orshot.com/v1/studio/render", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer YOUR_API_KEY",
},
body: JSON.stringify({
templateId: "YOUR_TEMPLATE_ID",
modifications: {
propertyImage: property.photo_url,
price: property.price,
address: property.address,
bedrooms: `${property.beds} Beds`,
bathrooms: `${property.baths} Baths`,
sqft: `${property.sqft} sq ft`,
agentName: property.agent,
status: "Just Listed",
},
response: {
type: "url",
format: "png",
},
}),
});
const result = await response.json();
return result.content; // Image URL ready to post
}
// Example usage
const listing = {
photo_url: "https://images.mls.com/property-456.jpg",
price: "$875,000",
address: "123 Oak Avenue, Austin TX",
beds: 4,
baths: 3,
sqft: "2,400",
agent: "Sarah Johnson",
};
const imageUrl = await generateListingImage(listing);
console.log(`Listing image: ${imageUrl}`);import requests
def generate_listing_image(property_data):
url = "https://api.orshot.com/v1/studio/render"
payload = {
"templateId": "YOUR_TEMPLATE_ID",
"modifications": {
"propertyImage": property_data["photo_url"],
"price": property_data["price"],
"address": property_data["address"],
"bedrooms": f"{property_data['beds']} Beds",
"bathrooms": f"{property_data['baths']} Baths",
"sqft": f"{property_data['sqft']} sq ft",
"agentName": property_data["agent"],
"status": "Just Listed"
},
"response": {
"type": "url",
"format": "png"
}
}
response = requests.post(url, json=payload, headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
})
return response.json()["content"]
# Generate for a single listing
listing = {
"photo_url": "https://images.mls.com/property-456.jpg",
"price": "$875,000",
"address": "123 Oak Avenue, Austin TX",
"beds": 4,
"baths": 3,
"sqft": "2,400",
"agent": "Sarah Johnson"
}
image_url = generate_listing_image(listing)
print(f"Listing image: {image_url}")When you have dozens of listings to process at once:
def generate_all_listing_images(listings):
results = []
for listing in listings:
try:
url = generate_listing_image(listing)
results.append({
"address": listing["address"],
"image_url": url,
"status": "success"
})
except Exception as e:
results.append({
"address": listing["address"],
"status": "failed",
"error": str(e)
})
return resultsPrefer not to write any code? Use no-code platforms to connect your data source directly to Orshot
Explore integrations: Orshot Integrations
Learn more: n8n Integration Docs · Make Integration Docs · Zapier Integration Docs

For email campaigns or landing pages, use Dynamic URLs to generate listing images without any backend code:
https://orshot.com/v1/studio/dynamic-url/property-listing.png?price=$875,000&address=123+Oak+Avenue&bedrooms=4+Beds&status=Just+ListedChange the URL parameters, and the image updates instantly. Use this in:
Stop spending hours on Canva for every listing. Design one template, generate images for every property in your portfolio automatically
![[object Object]](/customers/ibby.jpeg)
![[object Object]](/customers/alex.jpg)


![[object Object]](/customers/ivan.jpg)
No credit card required. Cancel anytime.