ZAP Imóveis Scraper | $2 / 1k | Fast & Reliable
Pricing
$1.99 / 1,000 results
ZAP Imóveis Scraper | $2 / 1k | Fast & Reliable
Extract structured Brazil property listings from ZAP Imoveis with pricing, locations, seller details, media assets, and contact data. Built for enterprise-grade Brazil real estate intelligence, listing monitoring, lead enrichment and automated analytics pipelines.
Pricing
$1.99 / 1,000 results
Rating
5.0
(1)
Developer
Fatih Tahta
Actor stats
4
Bookmarked
91
Total users
8
Monthly active users
8 days ago
Last modified
Categories
Share
ZAP Imoveis Scraper
Slug: fatihtahta/zap-imoveis-scraper
Overview
ZAP Imoveis Scraper collects structured real estate listing data from ZAP Imoveis, including listing identifiers, pricing, location, property characteristics, seller details, media assets, and contact information. It turns location-based searches and filters into clean JSON records that are ready for analysis, reporting, and downstream systems. ZAP Imoveis is one of Brazil's most widely used property marketplaces, making it a valuable source for housing supply, pricing visibility, and local market research. The actor automates repetitive collection work so teams do not have to search, copy, and normalize listing data by hand. The result is a more consistent dataset and less operational time spent on recurring data collection.
Why Use This Actor
- Market researchers and analysts: Track listing volume, asking prices, property mix, and neighborhood trends across cities or segments.
- Product and content teams: Build local market pages, comparison content, and property datasets with structured listing, pricing, and media fields.
- Developers and data engineers: Feed ETL jobs, warehouses, internal dashboards, and enrichment workflows with normalized listing records.
- Lead generation and enrichment teams: Identify active listings, agencies, and seller details for CRM enrichment, outreach research, or territory mapping.
- Monitoring and competitive tracking teams: Watch changes in supply, pricing, below-market opportunities, and transit-friendly inventory over time.
Input Parameters
Provide any combination of URLs, queries, and filters...
| Parameter | Type | Description | Default |
|---|---|---|---|
deal_type | string | Whether to collect listings for sale or rent. Allowed values: sale, rent. | sale |
location | string | A place name or address-style query in Brazil, such as a city, neighborhood, district, avenue, or street. | – |
property_type | array[string] | One or more property types to include. Allowed values: apartment, studio, kitnet, house, gated_house, villa_house, penthouse, flat, loft, residential_land, townhouse, farm, store, office, commercial_house, hotel, corporate_floor, building, commercial_land, storage, garage. | – |
min_bedroom | string | Minimum bedroom count to include. Allowed values: 1, 2, 3, 4 for 1+, 2+, 3+, or 4+ bedrooms. | – |
min_bathroom | string | Minimum bathroom count to include. Allowed values: 1, 2, 3, 4 for 1+, 2+, 3+, or 4+ bathrooms. | – |
min_parking | string | Minimum parking spaces to include. Allowed values: 1, 2, 3, 4 for 1+, 2+, 3+, or 4+ spaces. | – |
min_price | integer | Minimum listing price to include. Use whole numbers such as 400000. | – |
max_price | integer | Maximum listing price to include. Use whole numbers such as 3000000. | – |
below_market_price | boolean | When true, keeps only listings marked as below market price. | false |
min_sqm | integer | Minimum usable area in square meters. | – |
max_sqm | integer | Maximum usable area in square meters. | – |
near_transit | boolean | When true, keeps only listings tagged as near transit access. | false |
limit | integer | Maximum number of listings to save for the run. Leave empty to collect all available results for the selected search. | – |
proxyConfiguration | object | Optional Apify proxy settings. In most cases, the default setup is the right choice. | Apify proxy with RESIDENTIAL group |
Example Inputs
Scenario: Broad city sale search
{"deal_type": "sale","location": "Sao Paulo","property_type": ["apartment", "house"],"min_price": 400000,"max_price": 1500000,"limit": 250}
Scenario: Rental search with commuter-friendly filters
{"deal_type": "rent","location": "Pinheiros, Sao Paulo","property_type": ["apartment", "studio"],"min_bedroom": "1","near_transit": true,"max_price": 6000,"limit": 150}
Scenario: Targeted below-market shortlist
{"deal_type": "sale","location": "Belo Horizonte","property_type": ["apartment"],"min_bathroom": "2","below_market_price": true,"min_sqm": 70,"max_sqm": 120,"limit": 100}
Output
6.1 Output destination
The actor writes results to an Apify dataset as JSON records. And the dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.
6.2 Record envelope (all items)
Every record includes these stable top-level identifiers:
- type (string, required): Record category. Current value:
listing. - id (number, required): Stable listing identifier.
- url (string, required): Canonical listing URL.
Recommended idempotency key: type + ":" + id
If the same listing appears across multiple searches or repeated runs, use this key for deduplication and upserts.
6.3 Examples
Example: listing (type = "listing")
{"type": "listing","id": 2818995261,"url": "https://www.zapimoveis.com.br/imovel/venda-predio-com-interfone-casa-verde-sao-paulo-41m2-id-2818995261/","identity": {"id": "2818995261","external_id": "CF52230","source_id": "8581f4d4-ff05-3fe4-ac09-ba9270d7e9f7","provider_id": "48741","fingerprint": "fe1cb8614994e8ed6523"},"source_context": {"url": "https://www.zapimoveis.com.br/imovel/venda-predio-com-interfone-casa-verde-sao-paulo-41m2-id-2818995261/","source_url": "https://www.zapimoveis.com.br/venda/imoveis/?onde=Sao+Paulo&ordem=MOST_RELEVANT","page_index": 1,"seed": {"id": "2af1977af04a","type": "location","value": "Sao Paulo"}},"timestamps": {"published_at": "2026-04-03T00:23:49.685000+00:00","created_at": "2025-07-05T04:09:53.407000+00:00","updated_at": "2026-04-03T00:23:49.685000+00:00"},"content": {"title": "SALA COMERCIAL NO BAIRRO CASA VERDE, PRÓXIMA A AVENIDA BRAZ LEME E MARGINAL TIETÊ.","description": "Estamos orgulhosos em apresentar uma oportunidade única de investimento no coração do bairro Casa Verde, zona norte de São Paulo. Uma sala comercial de 41m² no prestigioso Centro Empresarial Office Tower. A sala é equipada com 2 banheiros, uma sacada, 2 pontos para ar condicionado, toda em piso de cerâmica e 1 vaga de garagem. Localizada estrategicamente próximo à Avenida Braz Leme e Marginal Tietê, a região oferece uma ampla variedade de comércios, incluindo academias, bancos, supermercados e restaurantes. O Centro Empresarial Office Tower é conhecido por suas comodidades, incluindo uma recepção acolhedora, estacionamento coberto com serviço de manobrista para visitantes e 2 elevadores modernos. A proprietária está aberta à permuta por uma sala comercial na região de Alphaville. A documentação do imóvel está em dia, proporcionando uma transação tranquila e segura. Não perca esta oportunidade de investir em um dos endereços comerciais mais cobiçados de São Paulo. Entre em contato conosco para mais informações e agende a sua visita! A Carlos Ferrari Imóveis atua há mais de 13 anos no mercado imobiliário, ajudando famílias e empresas a realizarem seus sonhos com segurança, transparência e dedicação. Nossa missão é conectar pessoas às melhores oportunidades, seja para compra, venda ou locação. Estamos prontos para entender suas necessidades e buscar, com agilidade, o imóvel mais adequado ao seu perfil. Nossa equipe está à disposição para fornecer mais informações, agendar visitas e apresentar outras opções que atendam às suas expectativas. Entre em contato conosco e descubra como podemos ajudá-lo a encontrar o imóvel ideal. Conte com a experiência de quem conhece o mercado e valoriza cada etapa da sua conquista."},"pricing": {"amount": 230000,"currency": "BRL","offers": [{"business_type": "sale","amount": 230000,"currency": "BRL","monthly_condo_fee": 842}]},"availability": {"status": "active","show_price": true,"accept_exchange": false,"resale": false,"non_activation_reason": "none"},"location": {"label": "Casa Verde","street": "Rua Saguairu","street_number": "725","neighborhood": "Casa Verde","city": "São Paulo","state_code": "SP","coordinates": {"latitude": -23.511739,"longitude": -46.65643,"source": "GOOGLE"},"geocoding": {"address_type": "all"}},"media": {"images": [{"id": "483924445c3591a589dbe751a29f88dd","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/483924445c3591a589dbe751a29f88dd/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "5c0f5a9233312c84cea4b82175059d4c","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/5c0f5a9233312c84cea4b82175059d4c/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "e4adbd0bcaed931f2ebcd8d03ff02266","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/e4adbd0bcaed931f2ebcd8d03ff02266/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "9098ef62fe860ca59cf1d87de8317903","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/9098ef62fe860ca59cf1d87de8317903/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "336ea30eff3b178b079cadab5f53a485","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/336ea30eff3b178b079cadab5f53a485/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "6c445d0af8f7f9a7f789d6266c4fdb26","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/6c445d0af8f7f9a7f789d6266c4fdb26/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "eb70b901d26da3f9ecd571ad0df695df","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/eb70b901d26da3f9ecd571ad0df695df/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "62877c50e01c7f59c98473983b817ea1","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/62877c50e01c7f59c98473983b817ea1/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "32a3993841124347d3fe2e3670673f22","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/32a3993841124347d3fe2e3670673f22/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "2491fb91b86015231cb49c4976823fe0","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/2491fb91b86015231cb49c4976823fe0/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"},{"id": "417e3c190771ae3e389d97904e68ab6b","url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/417e3c190771ae3e389d97904e68ab6b/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D"}],"videos": [{"id": "74b0dcd3dc9e9b85c1253b7d65f2ac39","url": "https://www.youtube.com/embed/YuguasF4r28"}],"other": [{"type": "video_tour","id": "a9b3a920879cb193bf0a0fbdeaea9f3c","url": "https://www.vila360.com.br/tour-virtual-360-personalizado/"}]},"attributes": {"business": "sale","contract_type": "real_estate","listing_type": "used","property_type": "unit","publication_type": "standard","construction_status": "none","display_address_type": "all","portal": "grupozap","portals": ["olx", "vivareal", "zap"],"unit_types": ["commercial_building"],"usage_types": ["commercial"],"amenities": ["intercom","near_shopping_center","elevator","near_shopping_center_2","cold_floor","near_public_transport","near_school","air_conditioning","balcony","near_hospital","guest_parking","administration","near_access_roads"],"buildings": 0,"units_on_the_floor": 0,"unit_floor": 0,"rooms": {"bedrooms": 0,"bedroom_options": [0],"bathrooms": 2,"bathroom_options": [2],"suites": 0,"suite_options": [0],"parking_spaces": 1,"parking_space_options": [1]},"area": {"usable_area": 41,"usable_area_options": [41],"total_area": 41,"total_area_options": [41]}},"entities": {"seller": {"account_id": "d9f14e17-ac8d-0c4d-7a15-b3e47c66d232","advertiser_id": "d9f14e17-ac8d-0c4d-7a15-b3e47c66d232","name": "Carlos Ferrari Imóveis","profile_url": "https://www.zapimoveis.com.br/imobiliaria/38598/","license_number": "22501-J-SP","tier": "diamond","logo_url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/1c80ee2e9fdb549495a29b7be12831ac/{description}.webp?action=%7Baction%7D&dimension=%7Bwidth%7Dx%7Bheight%7D","verified": true,"show_address": true,"created_at": "2018-03-27T14:30:33+00:00","legacy_vivareal_id": 38598,"legacy_zap_id": 2110905,"config": {"verified": true}}},"contact": {"phones": ["1122876666", "11999954700"],"whatsapp": "11999954700"}}
Field reference
Listing fields (type = "listing")
- type (string, required): Record type. Always
listing. - id (number, required): Stable listing identifier.
- url (string, required): Canonical listing URL.
- identity.id (string, optional): Source listing ID.
- identity.external_id (string, optional): Provider-facing external reference.
- identity.source_id (string, optional): Source system identifier.
- identity.provider_id (string, optional): Provider or advertiser reference ID.
- identity.fingerprint (string, optional): Record fingerprint for source-level identity tracking.
- source_context.url (string, optional): Listing page URL used for the record.
- source_context.source_url (string, optional): Search page URL where the listing was discovered.
- source_context.page_index (number, optional): Search results page index.
- source_context.seed.id (string, optional): Identifier for the originating search seed.
- source_context.seed.type (string, optional): Seed category, such as
location. - source_context.seed.value (string, optional): Original seed value.
- timestamps.published_at (string, optional): Publication timestamp in ISO 8601 format.
- timestamps.created_at (string, optional): Original creation timestamp in ISO 8601 format.
- timestamps.updated_at (string, optional): Last update timestamp in ISO 8601 format.
- content.title (string, optional): Listing title.
- content.description (string, optional): Listing description text.
- pricing.amount (number, optional): Primary displayed price.
- pricing.currency (string, optional): Currency code for the primary price.
- pricing.offers[] (array[object], optional): Offer variants associated with the listing.
- pricing.offers[].business_type (string, optional): Offer type, such as sale or rent.
- pricing.offers[].amount (number, optional): Offer amount.
- pricing.offers[].currency (string, optional): Offer currency code.
- pricing.offers[].monthly_condo_fee (number, optional): Monthly condo fee when available.
- availability.status (string, optional): Listing availability status.
- availability.show_price (boolean, optional): Whether price is publicly shown.
- availability.accept_exchange (boolean, optional): Whether exchanges are accepted.
- availability.resale (boolean, optional): Whether the listing is marked as resale.
- availability.non_activation_reason (string, optional): Reason a listing is not active, when present.
- location.label (string, optional): Short location label.
- location.street (string, optional): Street name.
- location.street_number (string, optional): Street number.
- location.neighborhood (string, optional): Neighborhood name.
- location.city (string, optional): City name.
- location.state_code (string, optional): State code.
- location.coordinates.latitude (number, optional): Latitude.
- location.coordinates.longitude (number, optional): Longitude.
- location.coordinates.source (string, optional): Coordinate source label.
- location.geocoding.address_type (string, optional): Address granularity classification.
- media.images[] (array[object], optional): Image assets associated with the listing.
- media.images[].id (string, optional): Image identifier.
- media.images[].url (string, optional): Image URL template or asset URL.
- media.videos[] (array[object], optional): Video assets associated with the listing.
- media.videos[].id (string, optional): Video identifier.
- media.videos[].url (string, optional): Video URL.
- media.other[] (array[object], optional): Additional media items.
- media.other[].type (string, optional): Additional media type.
- media.other[].id (string, optional): Additional media identifier.
- media.other[].url (string, optional): Additional media URL.
- attributes.business (string, optional): Business type, such as sale or rent.
- attributes.contract_type (string, optional): Contract classification.
- attributes.listing_type (string, optional): Listing condition or listing class.
- attributes.property_type (string, optional): High-level property classification.
- attributes.publication_type (string, optional): Publication tier or listing class.
- attributes.construction_status (string, optional): Construction status.
- attributes.display_address_type (string, optional): Address display mode.
- attributes.portal (string, optional): Primary portal name.
- attributes.portals[] (array[string], optional): Related portal names.
- attributes.unit_types[] (array[string], optional): Unit type labels.
- attributes.usage_types[] (array[string], optional): Usage type labels.
- attributes.amenities[] (array[string], optional): Amenity labels.
- attributes.buildings (number, optional): Building count when applicable.
- attributes.units_on_the_floor (number, optional): Units on the floor when available.
- attributes.unit_floor (number, optional): Floor number when available.
- attributes.rooms.bedrooms (number, optional): Bedroom count.
- attributes.rooms.bedroom_options[] (array[number], optional): Available bedroom count options.
- attributes.rooms.bathrooms (number, optional): Bathroom count.
- attributes.rooms.bathroom_options[] (array[number], optional): Available bathroom count options.
- attributes.rooms.suites (number, optional): Suite count.
- attributes.rooms.suite_options[] (array[number], optional): Available suite count options.
- attributes.rooms.parking_spaces (number, optional): Parking space count.
- attributes.rooms.parking_space_options[] (array[number], optional): Available parking count options.
- attributes.area.usable_area (number, optional): Usable area in square meters.
- attributes.area.usable_area_options[] (array[number], optional): Available usable area values.
- attributes.area.total_area (number, optional): Total area in square meters.
- attributes.area.total_area_options[] (array[number], optional): Available total area values.
- entities.seller.account_id (string, optional): Seller account identifier.
- entities.seller.advertiser_id (string, optional): Advertiser identifier.
- entities.seller.name (string, optional): Seller or agency name.
- entities.seller.profile_url (string, optional): Seller profile URL.
- entities.seller.license_number (string, optional): License or registration number.
- entities.seller.tier (string, optional): Seller tier or badge level.
- entities.seller.logo_url (string, optional): Seller logo URL.
- entities.seller.verified (boolean, optional): Whether the seller is verified.
- entities.seller.show_address (boolean, optional): Whether the seller address is displayed.
- entities.seller.created_at (string, optional): Seller profile creation timestamp in ISO 8601 format.
- entities.seller.legacy_vivareal_id (number, optional): Legacy VivaReal identifier.
- entities.seller.legacy_zap_id (number, optional): Legacy ZAP identifier.
- entities.seller.config.verified (boolean, optional): Verification flag from seller configuration.
- contact.phones[] (array[string], optional): Public phone numbers.
- contact.whatsapp (string, optional): Public WhatsApp number.
Data guarantees & handling
- Best-effort extraction: fields may vary by region, session, listing availability, or site experiments.
- Optional fields: null-check in downstream code.
- Deduplication: recommend
type + ":" + id.
How to Run on Apify
- Open the Actor in Apify Console.
- Enter your location and choose whether to collect sale or rent listings.
- Add any optional filters you need, then set the maximum number of outputs to collect.
- Click Start and wait for the run to finish.
- Download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Scheduling
Automated Data Collection
You can schedule recurring runs to keep your property dataset fresh without manually starting each job. This is useful for ongoing market tracking, recurring exports, and regular reporting. Scheduled runs help keep your downstream systems aligned with the latest public listings and pricing changes.
- Navigate to Schedules in Apify Console
- Create a new schedule (daily, weekly, or custom cron)
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- Webhooks: Trigger downstream actions when a run completes
- Zapier: Connect to 5,000+ apps without coding
- Make (Integromat): Build multi-step automation workflows
- Google Sheets: Export results to a spreadsheet
- Slack/Discord: Receive notifications and summaries
- Email: Send automated reports via email
Performance
- Small runs (< 1,000 outputs): ~2–3 minutes
- Medium runs (1,000–5,000 outputs): ~5–15 minutes
- Large runs (5,000+ outputs): ~15–30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available real estate listing information from https://www.zapimoveis.com.br for legitimate business purposes. Common use cases include market analysis, listing monitoring, enrichment, and internal reporting workflows. Users are responsible for ensuring their use of collected data complies with applicable laws, regulations, and the target site's terms. This section is informational and not legal advice.
- Real estate research and market analysis
- Listing monitoring and portfolio tracking
- Data enrichment and reporting
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable (e.g., GDPR, CCPA)
Support
If you need help, use the Issues tab or the support section on the actor page. Include the input you used with sensitive values redacted, the run ID, a short note on expected versus actual behavior, and, if helpful, a small output sample.