Realtor.CA Scraper with Agents | $1 / 1k
Pricing
$0.99 / 1,000 results
Realtor.CA Scraper with Agents | $1 / 1k
Extract structured Canada real estate listings from Realtor.ca with property signals, seller details, media assets, contact data and more. Built for enterprise-grade Canada property intelligence, listing monitoring, lead enrichment and automated analytics pipelines.
Pricing
$0.99 / 1,000 results
Rating
0.0
(0)
Developer
Fatih Tahta
Actor stats
2
Bookmarked
52
Total users
7
Monthly active users
0.44 hours
Issues response
4 days ago
Last modified
Categories
Share
Realtor Canada Scraper
Slug: fatihtahta/realtor-canada-scraper
Overview
Realtor Canada Scraper collects structured Canadian real estate listing records, including listing identifiers, addresses, prices, property attributes, land and building details, agents, brokerages, media, open house information, and listing status. Realtor.ca is one of Canada's primary public real estate listing destinations, making its listing data useful for market analysis, inventory monitoring, lead enrichment, and operational reporting. The actor turns location-based property searches into repeatable JSON datasets that can be reviewed manually or consumed by downstream systems. It is designed for automation and recurring collection workflows where consistent record structure matters. Results reflect the public information available at run time and support dependable recurring data acquisition without assuming complete market coverage or service-level guarantees.
Why Use This Actor
- Market research and analytics: build structured extraction workflows for pricing bands, inventory movement, property types, locations, and availability trends across Canadian markets.
- Product and content teams: populate real estate experiences, location pages, comparison views, and editorial research with normalized public listing attributes.
- Developers and data engineering teams: feed repeatable collection results into downstream systems, ETL pipelines, warehouses, search indexes, and internal APIs.
- Lead generation and enrichment teams: enrich CRM records with public listing, agent, brokerage, and property context for qualification and segmentation.
- Monitoring and competitive tracking teams: schedule recurring data acquisition for market intelligence, listing change review, geographic coverage checks, and operational reporting.
Common Use Cases
- Market intelligence: monitor supply, pricing, property categories, locations, availability, and listing freshness across selected Canadian markets.
- Lead generation: build targeted prospect lists from public listings, associated agents, brokerages, and property attributes.
- Competitive monitoring: track visible inventory and positioning across regions, listing categories, and price bands.
- Catalog and directory building: populate internal real estate databases with structured public listing records.
- Data enrichment: add current public attributes to existing CRM, BI, underwriting, or analytics datasets.
- Recurring reporting: schedule periodic runs for dashboards, alerts, trend analysis, and market snapshots.
Quick Start
- Choose a required
locationvalue, such as a city, province, neighborhood, or city with province. - Select the
deal_type:buy,rent, orsold. - Add optional filters such as
property_type,building_type,bedroom_count,bathroom_count, price range, publication date, area, storeys, year built, property tax, or maintenance fee. - Choose a
sort_optionwhen you need a result order other than newest listings first. - Set a small
limitfor the first validation run. - Run the actor in Apify Console and inspect the first dataset records to confirm the shape matches your use case.
- Increase
limit, enablemaximize_coverage, adjust filters, or schedule the actor once the output is verified.
Input Parameters
Configure a location value, choose a deal_type, and optionally narrow results by listing, property, room, price, area, cost, and freshness filters.
| Parameter | Type | Description | Default |
|---|---|---|---|
location | string | Required. Canadian area to search. Enter a city, province, neighborhood, or city with province, such as Ottawa, Ottawa, Ontario, Toronto, Vancouver, Nova Scotia, or Ontario. Broader areas improve discovery; specific places produce more targeted datasets. | Required |
deal_type | string | Listing category. Allowed values: buy for properties for sale, rent for rental properties, sold for sold properties. | buy |
sold_within_days | string | Sold listing recency window. Applies only when deal_type is sold; buy and rent searches ignore it. Allowed values: all, 7, 14, 30, 90, 180, 365. | 365 |
property_type | string | Property category filter. Allowed values: residential, condo_strata, vacant_land, recreational, multi_family, agriculture, parking. | – |
building_type | string | Building format filter. Allowed values: house, row_townhouse, apartment, duplex, triplex, fourplex, garden_home, mobile_home, manufactured_home_mobile, special_purpose, residential_commercial_mix, manufactured_home, commercial_apartment, two_apartment_house, park_model_mobile_home, floathome. | – |
publication_date | string | Earliest listing publication date. Use a date value to include listings published on or after that date. | – |
keyword | string | Keyword or phrase used to focus results on listings that match specific text. | – |
open_house_only | boolean | When enabled, collects only listings with open house availability in the next 7 days. | false |
live_stream_only | boolean | When enabled, collects only listings with live stream open house availability in the next 7 days. | false |
sort_option | string | Listing order. Allowed values: date_desc, date_asc, price_asc, price_desc, open_houses_first, more_photos_first, virtual_tour_first. | date_desc |
maximize_coverage | boolean | Collects more listings that match the selected filters when a large search may exceed Realtor.ca's visible-result limit. It does not change the original filters. | true |
bedroom_count | string | Bedroom requirement. Allowed values: 1+, 2+, 3+, 4+, 5+, 1, 2, 3, 4, 5. Plus values mean minimum count; plain numbers mean exact count. | – |
bathroom_count | string | Bathroom requirement. Allowed values: 1+, 2+, 3+, 4+, 5+, 1, 2, 3, 4, 5. Plus values mean minimum count; plain numbers mean exact count. | – |
limit | integer | Maximum number of listings to save across the whole run. Minimum value: 1. Leave empty when no cap is needed. | – |
min_price | integer | Minimum asking price in CAD. Minimum value: 0. | – |
max_price | integer | Maximum asking price in CAD. Minimum value: 0. | – |
min_building_area | integer | Minimum building area in square feet. Minimum value: 0. | – |
max_building_area | integer | Maximum building area in square feet. Minimum value: 0. | – |
min_land_area | number | Minimum land area in acres. Minimum value: 0. | – |
max_land_area | number | Maximum land area in acres. Minimum value: 0. | – |
min_storey | string | Minimum number of storeys. Allowed values: 1, 2, 3, 4, 5, 6, 10, 15, 20, 50. | – |
max_storey | string | Maximum number of storeys. Allowed values: 1, 2, 3, 4, 5, 6, 10, 15, 20, 50. | – |
min_year_built | string | Earliest year built. Allowed values: 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2010, 2005, 2000, 1990, 1980, 1970, 1960, 1950, 1940, 1930, 1920, 1910, 1900. | – |
max_year_built | string | Latest year built. Allowed values: 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2010, 2005, 2000, 1990, 1980, 1970, 1960, 1950, 1940, 1930, 1920, 1910, 1900. | – |
min_property_tax | string | Minimum annual property tax in CAD. Allowed values: 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 8000, 10000, 20000. | – |
max_property_tax | string | Maximum annual property tax in CAD. Allowed values: 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 8000, 10000, 20000. | – |
min_maintenance_fee | string | Minimum monthly maintenance fee in CAD. Allowed values: 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1500, 2000. | – |
max_maintenance_fee | string | Maximum monthly maintenance fee in CAD. Allowed values: 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1500, 2000. | – |
Choosing Inputs
Use location as the primary scope control. A city or neighborhood usually produces cleaner segmentation, while a province or broad regional phrase is better for discovery and market-wide reporting.
Use deal_type to separate for-sale, rental, and sold listing workflows. Missing deal_type input defaults to buy. For sold searches, the default sold_within_days window is 365; set it to all only when you want to omit Realtor.ca's sold-within filter. Keep these categories in separate runs when you need cleaner analysis and simpler downstream reporting.
Filters such as property_type, building_type, bedrooms, bathrooms, price, building area, land area, storeys, year built, property tax, maintenance fee, publication_date, and keyword reduce the scope and produce more targeted datasets. Leave optional filters empty when broad discovery is more important than precision.
Start with a small limit to validate output quality and confirm that the selected filters return the expected records. Increase limit and consider maximize_coverage only after confirming the first dataset sample matches your use case.
Example Inputs
Scenario 1: For-sale condo listings in Toronto
{"location": "Toronto","deal_type": "buy","property_type": "condo_strata","building_type": "apartment","min_price": 500000,"max_price": 900000,"limit": 50}
Scenario 2: Rental listings with open houses in Vancouver
{"location": "Vancouver","deal_type": "rent","property_type": "residential","bedroom_count": "2+","bathroom_count": "1+","open_house_only": true,"limit": 25}
Scenario 3: Recently published vacant land listings in Nova Scotia
{"location": "Nova Scotia","deal_type": "buy","property_type": "vacant_land","publication_date": "2026-05-01","min_land_area": 1,"max_price": 250000,"limit": 100}
Output
9.1 Output destination
The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.
When multiple entity types or record shapes exist, the README documents each shape separately based on the provided Example Output. This actor currently writes listing records.
9.2 Record envelope and stable identifiers
Each dataset item is a listing record with top-level listing fields and nested objects for pricing, location, building, land, ownership, parking, agents, brokerages, media, status, source context, and source details.
Recommended idempotency key: id. If id is unavailable in a downstream workflow, use url as the next strongest key, followed by mls_number or a composite key such as mls_number plus location.address.
For deduplication and upserts, store the recommended idempotency key in your destination system and update existing rows when the same key appears in later runs. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs.
source_context.source_url identifies the public collection context that produced the record and is useful for auditability, segmentation, and troubleshooting.
9.3 Examples
Example: listing
{"id": "29701641","mls_number": "NB138728","url": "https://www.realtor.ca/real-estate/29701641/lot-craigville-road-miramichi","title": "Lot Craigville Road Miramichi, New Brunswick E1N5W2","property_type": "Vacant Land","public_remarks": "11.1 ACRE LOT IN NELSON!","pricing": {"display_price": "$28,500","amount": 28500,"currency": "CAD","short_value": "28.5K"},"location": {"address": "Lot Craigville Road Miramichi, New Brunswick E1N5W2","postal_code": "E1N5W2","province": "New Brunswick","coordinates": {"latitude": 46.975478,"longitude": -65.5338},"permit_show_address": true},"building": {"floor_area_measurements": [{"area": "1013 sqft","type": "Square Footage","measure_unit_id": "1"}]},"land": {"size_total": "11.1 ac"},"ownership": {"type": "Freehold","group_ids": [1]},"agents": [{"id": "1992277","name": "Kelsey Gorman","profile_url": "https://www.realtor.ca/agent/1992277/kelsey-gorman","phones": [{"type": "Telephone","number": "506-210-1240","area_code": "506","phone_type_id": "1"}],"websites": [{"url": "https://www.facebook.com/kelsey.gorman.31","website_type_id": "1"}],"organization": {"id": "296172","name": "RE/MAX Professionals"}}],"brokerages": [{"id": "296172","name": "RE/MAX Professionals"}],"media": {"images": [{"sequence": 1,"high_res_url": "https://cdn.realtor.ca/listing.jpg","last_updated": "2026-05-05T12:15:07","type_id": "0"}]},"status": {"id": "1","time_on_realtor": "5 min ago","tags": [{"label": "5 min ago","listing_tag_type_id": "1"}]},"source_context": {"seed_id": "seed123","seed_type": "query","seed_value": "Miramichi","deal_type": "buy","page_index": 1,"source_url": "https://www.realtor.ca/map?view=list&SearchText=Miramichi"},"source_details": {"relative_details_url": "/real-estate/29701641/lot-craigville-road-miramichi","inserted_at": "2026-05-05T12:15:07"}}
Field Reference
Listing Record
id (string, optional): Stable listing identifier when available. Recommended idempotency key.
mls_number (string, optional): MLS number associated with the listing.
url (string, optional): Public Realtor.ca listing URL.
title (string, optional): Human-readable listing title, typically based on the public address.
property_type (string, optional): Public property category, such as residential, vacant land, or condo/strata.
public_remarks (string, optional): Public listing description or remarks.
pricing.display_price (string, optional): Price as displayed publicly.
pricing.amount (integer, optional): Numeric price amount in CAD when available.
pricing.currency (string, optional): Price currency. Typically CAD.
pricing.short_value (string, optional): Compact price label when provided.
pricing.lease_display_price (string, optional): Rental price as displayed when deal_type is rent.
pricing.lease_amount (integer, optional): Numeric rental amount in CAD when available.
pricing.sold_display_price (string, optional): Sold price text as displayed when deal_type is sold.
pricing.sold_amount (integer, optional): Numeric sold amount in CAD when publicly available.
pricing.list_display_price (string, optional): Original/list price display retained for sold records when available.
pricing.list_amount (integer, optional): Original/list price amount retained for sold records when available.
pricing.price_change_time_on_realtor (string, optional): Display text for price change timing when available.
pricing.price_change_tag_date (string, optional): Price change date when available.
location.address (string, optional): Public address text.
location.postal_code (string, optional): Postal code.
location.province (string, optional): Province name.
location.coordinates.latitude (number, optional): Latitude.
location.coordinates.longitude (number, optional): Longitude.
location.permit_show_address (boolean, optional): Indicates whether the public listing permits address display.
building.floor_area_measurements (array, optional): Floor area measurements as provided by the listing.
building.floor_area_measurements.area (string, optional): Floor area value and unit label.
building.floor_area_measurements.type (string, optional): Measurement type.
building.floor_area_measurements.measure_unit_id (string, optional): Measurement unit identifier when provided.
building.* (string, number, boolean, array, or object, optional): Additional public building attributes may appear when available, such as storeys, size, amenities, fixture details, or construction details.
land.size_total (string, optional): Lot or land size as displayed publicly.
land.* (string, number, boolean, array, or object, optional): Additional public land attributes may appear when available.
ownership.type (string, optional): Ownership type, such as freehold or condominium/strata.
ownership.group_ids (array, optional): Ownership group identifiers when provided by the source data.
parking.types (array, optional): Structured parking types and spaces when available.
parking.types.name (string, optional): Parking type name.
parking.types.spaces (integer, optional): Number of spaces for the parking type.
parking.display_text (string, optional): Public parking text.
parking.spaces_total (integer, optional): Total parking spaces.
nearby_amenities (string, optional): Public nearby amenities text.
business (object, optional): Business-related listing attributes when available for the listing type.
agents (array, optional): Public listing agents associated with the listing.
agents.id (string, optional): Agent identifier.
agents.name (string, optional): Agent display name.
agents.first_name (string, optional): Agent first name.
agents.last_name (string, optional): Agent last name.
agents.position (string, optional): Agent position or role.
agents.designation (string, optional): Agent professional designation.
agents.photo_url (string, optional): Agent photo URL.
agents.profile_url (string, optional): Public agent profile URL.
agents.phones (array, optional): Public phone records.
agents.phones.type (string, optional): Phone type label.
agents.phones.number (string, optional): Formatted phone number.
agents.phones.area_code (string, optional): Phone area code.
agents.phones.phone_type_id (string, optional): Phone type identifier.
agents.websites (array, optional): Public agent website records.
agents.websites.url (string, optional): Website URL.
agents.websites.website_type_id (string, optional): Website type identifier.
agents.email_contacts (array, optional): Public email contact metadata when available.
agents.email_contacts.contact_id (string, optional): Contact identifier.
agents.organization (object, optional): Brokerage or organization associated with the agent.
agents.organization.id (string, optional): Organization identifier.
agents.organization.name (string, optional): Organization name.
agents.organization.type (string, optional): Organization type.
agents.organization.designation (string, optional): Organization designation.
agents.organization.logo_url (string, optional): Organization logo URL.
agents.organization.address.address (string, optional): Organization address.
agents.organization.address.permit_show_address (boolean, optional): Indicates whether the organization address may be shown.
agents.organization.phones (array, optional): Organization phone records.
agents.organization.websites (array, optional): Organization website records.
agents.organization.email_contacts (array, optional): Organization email contact metadata.
agents.organization.profile_url (string, optional): Public organization profile URL.
agents.organization.has_email (boolean, optional): Indicates whether public email contact is available.
agents.organization.permit_free_text_email (boolean, optional): Public email contact setting.
agents.organization.permit_show_listing_link (boolean, optional): Public listing-link display setting.
agents.organization.photo_last_updated (string, optional): Organization photo update timestamp when available.
agents.agent_photo_last_updated (string, optional): Agent photo update timestamp when available.
agents.permit_free_text_email (boolean, optional): Public email contact setting.
agents.permit_show_listing_link (boolean, optional): Public listing-link display setting.
agents.corporation_display_type_id (string, optional): Agent display type identifier.
agents.review_keys.rank_my_agent (string, optional): Public review key when available.
agents.review_keys.real_satisfied (string, optional): Public review key when available.
agents.review_keys.testimonial_tree (string, optional): Public review key when available.
brokerages (array, optional): Deduplicated public brokerages associated with the listing.
brokerages.id (string, optional): Brokerage identifier.
brokerages.name (string, optional): Brokerage name.
brokerages.type (string, optional): Brokerage type.
brokerages.designation (string, optional): Brokerage designation.
brokerages.logo_url (string, optional): Brokerage logo URL.
brokerages.address.address (string, optional): Brokerage address.
brokerages.phones (array, optional): Brokerage phone records.
brokerages.websites (array, optional): Brokerage website records.
brokerages.email_contacts (array, optional): Brokerage email contact metadata.
brokerages.profile_url (string, optional): Public brokerage profile URL.
open_houses (array, optional): Public open house events associated with the listing.
open_houses.display_time (string, optional): Public open house time label.
open_houses.start_time (string, optional): Open house start time.
open_houses.end_time (string, optional): Open house end time.
open_houses.event_type_id (string, optional): Event type identifier.
media.images (array, optional): Public listing images.
media.images.sequence (integer, optional): Image ordering value.
media.images.high_res_url (string, optional): High-resolution image URL.
media.images.medium_res_url (string, optional): Medium-resolution image URL.
media.images.low_res_url (string, optional): Low-resolution image URL.
media.images.svg_url (string, optional): SVG image URL when provided.
media.images.last_updated (string, optional): Image update timestamp.
media.images.type_id (string, optional): Image type identifier.
media.videos (array, optional): Public video media links.
media.videos.url (string, optional): Video URL.
media.videos.description (string, optional): Video description.
media.videos.order (integer, optional): Video ordering value.
media.videos.video_type (string, optional): Video type label.
media.floor_plans (array, optional): Public floor plan media links.
media.links (array, optional): Other public listing media or external links.
media.links.type (string, optional): Link type label.
media.links.url (string, optional): Link URL.
status.id (string, optional): Listing status identifier.
status.standard_status_id (string, optional): Standard listing status identifier when provided.
status.time_on_realtor (string, optional): Public listing freshness label.
status.has_new_image_update (boolean, optional): Indicates a public image update flag when available.
status.has_open_house_update (boolean, optional): Indicates a public open house update flag when available.
status.is_sold (boolean, optional): Indicates sold records when provided by Realtor.ca.
status.conditionally_sold (boolean, optional): Indicates conditional sold status when provided.
status.tags (array, optional): Public listing tags.
status.tags.label (string, optional): Tag label.
status.tags.html_color (string, optional): Tag color value when provided.
status.tags.listing_tag_type_id (string, optional): Tag type identifier.
source_context.seed_id (string, optional): Stable run seed identifier.
source_context.seed_type (string, optional): Seed category, such as a location query.
source_context.seed_value (string, optional): Location or search value that produced the record.
source_context.deal_type (string, optional): Deal type used for the record, such as buy, rent, or sold.
source_context.page_index (integer, optional): Result page index associated with the record.
source_context.source_url (string, optional): Public source context for the collected record.
source_details.relative_details_url (string, optional): Relative public details path.
source_details.relative_url_en (string, optional): English relative public URL when available.
source_details.relative_url_fr (string, optional): French relative public URL when available.
source_details.historical_data_is_cleared (boolean, optional): Public historical-data flag when available.
source_details.sold_on_realtor_at (string, optional): Sold timestamp reported by Realtor.ca when available.
source_details.sold_close_date (string, optional): Sold close date when available.
source_details.photo_changed_at (string, optional): Photo change timestamp when available.
source_details.open_house_inserted_at (string, optional): Open house insertion timestamp when available.
source_details.conditionally_sold_changed_at (string, optional): Conditional sold change timestamp when available.
source_details.inserted_at (string, optional): Listing insertion timestamp when available.
source_details.data_prep_inserted_at (string, optional): Data preparation timestamp when available.
source_details.listing_time_zone (string, optional): Listing time zone.
source_details.listing_boundary (string, optional): Listing boundary label when available.
source_details.listing_gmt_offset (string, optional): Listing GMT offset when available.
source_details.uploaded_by (string, optional): Public uploader label when available.
Data Quality, Guarantees, And Handling
- Structured records: results are normalized into predictable JSON objects for downstream use.
- Best-effort extraction: fields may vary by region, session, availability, and public interface experiments.
- Optional fields: null-check in downstream code before using nested values.
- Deduplication: use
idas the strongest stable key when available, withurl,mls_number, or a composite key as fallbacks. - Freshness: results reflect the publicly available data at run time.
- Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.
Tips For Best Results
- Start with a small
limitto validate the output shape before scaling up. - Use one geography, listing category, or market segment per run when you need cleaner segmentation.
- Leave optional filters empty when the goal is broad discovery.
- Add filters gradually to understand how each field changes coverage.
- Use
publication_datefor freshness-oriented monitoring workflows. - Schedule recurring runs for monitoring workflows instead of relying on manual one-off runs.
- Use stable identifiers such as
idorurlfor deduplication when storing results over time.
How to Run on Apify
- Open the Actor in Apify Console.
- Configure the available input fields for the target location, listing category, and filters.
- Set the maximum number of outputs to collect with
limit. - Click Start and wait for the run to finish.
- Inspect the dataset records and download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Scheduling
Automated Data Collection
Schedule runs to keep listing datasets fresh for market tracking, reporting, lead enrichment, and alerting workflows. Recurring runs are especially useful when you need consistent snapshots for the same location and filters.
- Navigate to Schedules in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- CRM enrichment: sync public listing, agent, brokerage, price, and location attributes into account or lead records.
- BI dashboards: monitor pricing, availability, property category movement, and geographic coverage over time.
- Data warehouses: store repeated listing snapshots for historical analysis, modeling, and operational reporting.
- Webhooks: trigger validation, notification, enrichment, or ingestion workflows after each completed run.
- Google Sheets or Airtable: review smaller market samples, lead lists, or QA datasets with non-technical teams.
- Alerts and scheduled reports: notify teams when new matching listings, price bands, or open house records appear.
Export Formats And Downstream Use
Apify datasets can be exported or consumed by downstream systems for review, automation, and long-term storage.
- JSON: for APIs, applications, and data pipelines
- CSV or Excel: for spreadsheet workflows and manual review
- API access: for automated ingestion into internal systems
- BI and warehouses: for reporting, dashboards, and historical analysis
Performance
The following run times are estimates:
- Small runs (< 1,000 outputs): ~3-5 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. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.
Limitations
- Availability depends on what Realtor.ca publicly exposes at run time.
- Some optional fields may be missing on sparse records, certain property types, or listings with limited public details.
- Very broad searches may take longer or require higher
limitvalues to collect enough records. - Target-side changes can affect field availability, labels, or naming.
- Regional, account, or availability differences may change visible results.
- Sold listing availability and detail level may differ from active for-sale or rental listings.
Troubleshooting
- No results returned: check filters, location spelling, listing category, and whether Realtor.ca has matching public records.
- Fewer results than expected: broaden filters, raise
limit, or verify that the selected location contains enough matching listings. - Some fields are empty: optional fields depend on what each public listing provides.
- Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller location and filter segments. - Output changed: compare the current output with the field reference and report a small sample if support is needed.
FAQ
What data does this actor collect?
It collects public Realtor.ca listing records, including listing identifiers, URLs, prices, addresses, property attributes, building and land details, agents, brokerages, media, open house details, and listing status when available.
Can I filter by location, category, date, price, or other criteria?
Yes. The actor supports location, deal_type, property_type, building_type, publication_date, keyword, bedrooms, bathrooms, price range, building area, land area, storeys, year built, property tax, maintenance fee, and open house availability filters.
Why did I receive fewer results than my limit?
The selected location and filters may not have enough matching public records. Broaden the scope, remove optional filters, or try a nearby location if you need more results.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the same location and filter configuration daily, weekly, or on a custom cron schedule.
How do I avoid duplicates across runs?
Use id as the preferred idempotency key. If id is not available in your destination system, use url, mls_number, or a composite key such as mls_number plus location.address.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets can be downloaded in JSON, CSV, Excel, and other supported formats, or consumed programmatically through Apify dataset access.
Does this actor collect private data?
No. The actor is intended to collect publicly available information visible on Realtor.ca. Users are responsible for ensuring their use of the data complies with applicable laws, regulations, and terms.
What should I include when reporting an issue?
Include the input used, a run ID, expected versus actual behavior, and a small output sample if it helps show the issue. Redact any sensitive operational context before sharing.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available real estate listing information from Realtor.ca for legitimate business purposes, including:
- Real estate research and market analysis
- Lead enrichment and operational reporting
- Inventory, pricing, and availability monitoring
Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, and the target site's terms. This section is informational and not legal advice.
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, such as GDPR and CCPA
Support
For help, use the actor page or Issues. Include the input used with sensitive values redacted, the run ID, the expected versus actual behavior, and a small output sample when useful. Avoid sharing private business data or credentials in support requests.