# MovingSoon Affordable Housing Scraper (`vivid-softwares/movingsoon-affordable-housing-scraper`) Actor

Scrape MovingSoon UK property listings for affordable housing, social rent, housing associations, shared ownership, retirement and accessible homes. Extract prices, availability, providers, locations and images to structured datasets, then export through the Apify API or scheduled runs.

- **URL**: https://apify.com/vivid-softwares/movingsoon-affordable-housing-scraper.md
- **Developed by:** [VividSoftwares](https://apify.com/vivid-softwares) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00 / 1,000 property listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does MovingSoon Affordable Housing Scraper do?

**MovingSoon Affordable Housing Scraper** extracts public UK property listings from [MovingSoon](https://movingsoon.co.uk/). Use it as a **MovingSoon API alternative** for affordable housing, social rent, housing association homes, shared ownership, retirement housing, supported housing and accessible property research.

The Actor accepts MovingSoon search, category, location and individual property URLs. It follows result pages, visits each public property page and saves structured records to an Apify dataset. It does not submit enquiry forms or collect applicant data.

Export results as JSON, CSV, Excel or XML, run the scraper through the Apify API, schedule recurring searches, monitor runs, and connect the dataset to webhooks or other integrations.

### Why scrape MovingSoon?

MovingSoon focuses on parts of the UK housing market that general property portals often mix into broader results. This Actor helps you:

- Monitor affordable and social rental supply by location
- Track housing association and provider listings
- Compare weekly rent, monthly rent and service charges
- Research shared ownership prices and equity percentages
- Find retirement, supported, accessible and no-deposit housing
- Build property alerts, dashboards and market datasets
- Schedule recurring runs and connect results through the Apify API

### What data can the MovingSoon scraper extract?

| Field | Description |
|---|---|
| `property_id` | MovingSoon property reference such as `MS-141094` |
| `title`, `url`, `status` | Listing identity, public URL and sale/rental classifications |
| `headline_price`, `price_period` | Main advertised price and weekly/monthly period |
| `rent_per_week`, `rent_per_month` | Structured rental amounts when published |
| `available_from` | Advertised availability date when published |
| `overall_property_value` | Full property value for sale or shared ownership listings |
| `equity_share_percent`, `equity_share_value` | Advertised shared ownership stake |
| `service_charge_monthly` | Estimated monthly service charge when available |
| `property_type`, `bedrooms`, `bathrooms` | Core property facts |
| `address`, `city`, `county`, `postcode` | Public listing location |
| `housing_provider` | Housing association, agent or property provider |
| `provider_email` | Provider email when MovingSoon publishes it in the listing form |
| `provider_phone` | Provider contact number when MovingSoon publishes one |
| `tenure`, `lease_length`, `council_tax_band` | Published tenure, lease and council tax data |
| `accessibility`, `parking` | Extra accessibility and parking details when published |
| `key_information_document_url` | Public key information document link when available |
| `key_features` | Categories such as first-time buyer or new-build housing |
| `age_restrictions`, `age_criteria_note` | Published Over 55 or Over 60 categories, with a warning when the exact requirement is ambiguous |
| `description`, `updated_at` | Public description and listing update time |
| `images`, `image_count` | Public property image URLs |

Fields appear only when MovingSoon publishes a value on the property page.

Some retirement listings are tagged with both `Over 55 Housing` and `Over 60 Housing`. In that case, the Actor preserves both categories and tells users to check the full description or contact the provider. It does not guess a minimum age that MovingSoon has not stated clearly.

### How to scrape MovingSoon

1. Open the Actor input tab.
2. Add one or more MovingSoon URLs. Search pages, location pages, category pages and direct property URLs are supported.
3. Set the maximum number of listings.
4. Choose whether to include image URLs.
5. Start the Actor and download the dataset as JSON, CSV, Excel, XML or another supported format.

#### Example input

```json
{
  "startUrls": [
    {"url": "https://movingsoon.co.uk/properties-to-rent/"}
  ],
  "maxItems": 100,
  "includeImages": true,
  "includeDuplicates": false
}
```

You can also start from a focused page such as a county, DSS-accepted rental, pet-friendly rental, no-deposit rental, retirement property or shared ownership search.

### Output example

```json
{
  "property_id": "MS-141094",
  "title": "Shared Ownership in Maldon, Essex 1 bedroom Apartment",
  "status": ["For Sale", "Shared Ownership"],
  "headline_price": "£200,000",
  "rent_per_month": "£298",
  "overall_property_value": "£200,000",
  "equity_share_percent": 35,
  "equity_share_value": "£70,000",
  "service_charge_monthly": "£85",
  "property_type": "Apartment",
  "bedrooms": 1,
  "bathrooms": 1,
  "city": "Maldon",
  "county": "Essex",
  "postcode": "CM9 4HH",
  "housing_provider": "Delta Housing",
  "tenure": "Leasehold"
}
```

### How much does it cost to scrape MovingSoon?

The Actor costs **$15 per 1,000 property listings**, which is **$0.015 per saved listing**. You are charged only for results successfully added to the dataset. Set a maximum run charge in Apify to control spending.

| Results | Price |
|---:|---:|
| 100 | $1.50 |
| 500 | $7.50 |
| 1,000 | $15.00 |

### Tips

- Use direct property URLs to refresh specific records cheaply.
- Use focused category or location URLs to reduce unrelated results.
- Disable images when you only need structured market data.
- Schedule recurring runs to monitor new listings: by default each run skips listings you already received and only returns (and charges for) new ones.
- Turn on **Include listings from previous runs** (`includeDuplicates`) when you want a full refresh, then compare `property_id`, `status` and `updated_at` to detect changes.

### Use MovingSoon scraper with AI agents

MCP-compatible agents can discover and run this Actor through the [Apify MCP server](https://mcp.apify.com?tools=vivid-softwares/movingsoon-affordable-housing-scraper). The Actor's structured schemas describe its search URLs, limits and output fields so an agent can select it, run it and retrieve affordable housing records without custom scraping code.

Example agent requests:

- "Find social rent listings on MovingSoon in Greater Manchester."
- "Extract shared ownership properties from this MovingSoon search URL."
- "Monitor new accessible or retirement housing listings and return prices and providers."

### MovingSoon scraper FAQ

#### Can I scrape MovingSoon search result URLs?

Yes. Add a MovingSoon search, category, location or pagination URL. The Actor follows result pages automatically and visits each matching property page until it reaches `maxItems`.

#### Does it return duplicate listings?

No. Within a run each property is saved once, even when it appears in several of your URLs. Across runs, the Actor remembers the listings it has already saved for your account and skips them by default, so repeat and scheduled runs only return new listings and you are not charged again. Turn on **Include listings from previous runs** (`includeDuplicates`) to get every matching listing again; each item has `seen_in_previous_run` so you can tell them apart. The history is stored in a dataset named `movingsoon-history-<your user ID>` in your own Apify account, and deleting it starts fresh.

#### Does the scraper support pagination?

Yes. It discovers and follows additional MovingSoon result pages while removing duplicate property URLs and IDs.

#### Can I use this as a MovingSoon API?

Yes. Start runs with the Apify API and retrieve structured property data from the resulting dataset. You can also schedule runs and connect results to webhooks, Make, Zapier or other Apify integrations.

#### Does it extract landlord phone numbers or private contact details?

No. The Actor extracts public listing data only. It saves a provider email only when MovingSoon publishes that email on the property page.

### Privacy, disclaimer and support

This Actor extracts information visible on public MovingSoon listing pages. It does not submit contact forms, create accounts or collect the personal details requested from prospective applicants.

Our Actors are ethical and do not extract private user data. They only extract information made public on listing pages. Results may still contain public provider or agent information. Personal data is protected by the UK GDPR, the EU GDPR and other regulations. Only process personal data when you have a legitimate reason. Consult a lawyer if you are unsure.

MovingSoon is a trademark of its respective owner. This Actor is independent and is not endorsed by MovingSoon. Website layouts can change; use the Actor Issues tab to report missing fields or parsing problems.

# Actor input Schema

## `startUrls` (type: `array`):

MovingSoon search, category, location, pagination, or individual property URLs.

## `maxItems` (type: `integer`):

Maximum number of property detail pages to save.

## `includeImages` (type: `boolean`):

Include public property image URLs.

## `includeDuplicates` (type: `boolean`):

Off by default: listings you already received in an earlier run are skipped and not charged, so scheduled runs only return new listings. Turn on to get every matching listing again.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://movingsoon.co.uk/properties-to-rent/"
    }
  ],
  "maxItems": 100,
  "includeImages": true,
  "includeDuplicates": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://movingsoon.co.uk/properties-to-rent/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vivid-softwares/movingsoon-affordable-housing-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://movingsoon.co.uk/properties-to-rent/" }] }

# Run the Actor and wait for it to finish
run = client.actor("vivid-softwares/movingsoon-affordable-housing-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://movingsoon.co.uk/properties-to-rent/"
    }
  ]
}' |
apify call vivid-softwares/movingsoon-affordable-housing-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vivid-softwares/movingsoon-affordable-housing-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8mxxKi9fWHg5D0JFg/builds/ZRrCSjoUbvRLSJ5LL/openapi.json
