# Rental Listing Scam Checker for Craigslist & FB (`ultimatemc/rental-listing-scam-checker`) Actor

Score rental listings from Craigslist, Facebook Marketplace or any scraper for FTC-listed scam signs: wire, gift card or crypto payment, deposit before viewing, owner overseas, fake platform escrow, early SSN requests, rent far below similar listings and copied text. Quotes and FTC sources.

- **URL**: https://apify.com/ultimatemc/rental-listing-scam-checker.md
- **Developed by:** [Ultimate Foresight Inc](https://apify.com/ultimatemc) (community)
- **Categories:** Real estate, Automation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

Screen **rental listings from Craigslist, Facebook Marketplace, Zillow or any scraper** for the **scam warning signs the FTC describes**. The **Rental Listing Scam Checker** reads each listing's title and description and gives a **0-100 scam signal score** based on **payment by wire, gift card or crypto**, **deposits before a viewing**, **owners who are "out of the country" and will mail the keys**, **fake Airbnb or Zillow deposit protection**, **early SSN or credit report requests**, **WhatsApp-only contact**, **pressure to decide today**, **rent far below similar listings in the same run** and **copied listing text with a different price or contact**. Each signal shows the matched words, its weight and the FTC source. Click **Start** with the prefilled example to see it work.

> This is an automated screen for warning signs, not a finding that any listing or person is fraudulent. A zero score doesn't mean a listing is genuine; every row carries this disclaimer. Emails and phone numbers are masked in the output.

### What does Rental Listing Scam Checker do?

- ✅ **Payment red flags**: wire transfer, Western Union, MoneyGram, gift cards, Bitcoin or other crypto (30 points); Zelle, Cash App, Venmo or PayPal friends & family for a deposit (15). Move-in gift card specials, wire shelving and pre-wired units are ignored, and so is Zelle rent paid after signing a lease.
- ✅ **Money before viewing** (25): deposit or holding fee before a tour, "can't show the house", drive-by only. "Virtual tours available" isn't flagged.
- ✅ **Absent owner** (20): out of the country, on a mission trip, deployed or transferred, keys mailed or couriered, "my lawyer will handle it". Study abroad mentions are ignored.
- ✅ **Fake platform protection** (20): "Airbnb will hold the deposit", "Zillow payment protection".
- ✅ **Early personal data requests** (15): SSN, driver's license, credit report screenshots, credit check through a link the poster sends.
- ✅ **Contact and pressure** (5-10): WhatsApp or Telegram only, "first to send the deposit gets it", "many people are interested", and story patterns like "God-fearing" owners.
- ✅ **Price check across the run** (15-25): rent under 50% (or 35%) of the median for the same city and bedroom count, when at least 5 such listings are in the run.
- ✅ **Copied listings** (15): the same description text in another listing in the run with a different price or contact.
- ✅ Output per listing: `scamSignalScore` (0-100), `signalLevel`, `signalCount`, `categoriesFlagged`, `signals` (`signalId`, `weight`, `quote`, `context`, `sourceUrl`, `whyItMatters`), `price`, `bedrooms`, `city`, `marketComparison`, `notes`, `checkedAt` and a disclaimer.

### Who is it for?

- **Renters and relocation services** checking listings before contacting a landlord.
- **Rental marketplaces, classifieds and community moderators** triaging reported or new listings.
- **Property managers and landlords** looking for copies of their own listings with someone else's contact details.
- **Researchers, journalists and consumer groups** measuring rental scam patterns in scraped listing data.

### How to check rental listings for scam signs

1. Click **Start** with the prefilled example (one listing with several warning signs, one ordinary listing).
2. Replace the example with your listings: `title`, `text`, and optionally `price`, `city`, `bedrooms`, `id` and `url`. Or paste a landlord's message into **Texts only**.
3. Or enter a **Dataset ID** from a Craigslist, Facebook Marketplace, Zillow or Apartments.com scraper. Common field names, including nested ones like `listing_price.amount`, are found automatically; use **Field map** (dotted paths work) for others.
4. For the price check, run listings from one area together so each city and bedroom group has at least 5 listings.
5. Turn on **Only save listings with signals** for big runs; you only pay for saved rows.

### Input example

This is the prefilled input:

```json
{
  "listings": [
    {
      "id": "EXAMPLE-1",
      "title": "Example 2BR house, utilities included",
      "text": "I am currently out of the country on a mission trip, so I can't show the house. Keys will be mailed to you once you send the deposit first via Zelle or gift cards. Text me on WhatsApp. Many people are interested so decide today.",
      "price": "$850",
      "city": "Example City",
      "bedrooms": 2
    },
    {
      "id": "EXAMPLE-2",
      "title": "Example 1BR apartment near the park",
      "text": "Second-floor one bedroom with in-unit laundry and parking. Schedule a tour with our leasing office; 12-month lease, apply online. Move-in special: receive a $200 gift card when you sign.",
      "price": "$1,450",
      "city": "Example City",
      "bedrooms": 1
    }
  ]
}
```

Dataset mode:

```json
{"datasetId": "YOUR_DATASET_ID", "fieldMap": {"text": "postingBody", "price": "listing_price.amount", "city": "location.reverse_geocode.city"}, "onlyFlagged": true, "maxItems": 5000}
```

### Output example

Real output from a run of the prefilled input on 2026-10-30 (long finding lists are shortened here; the run returns all of them):

```json
[
  {
    "itemNo": 1,
    "listingId": "EXAMPLE-1",
    "url": null,
    "title": "Example 2BR house, utilities included",
    "scamSignalScore": 100,
    "signalLevel": "many scam signals",
    "signalCount": 6,
    "categoriesFlagged": [
      "Absent owner",
      "Contact pattern",
      "Payment method",
      "Pressure",
      "Upfront money"
    ],
    "signals": [
      {
        "signalId": "wire_giftcard_crypto",
        "category": "Payment method",
        "weight": 30,
        "quote": "gift cards",
        "context": "...once you send the deposit first via Zelle or gift cards. Text me on WhatsApp. Many people are intere...",
        "sourceUrl": "https://consumer.ftc.gov/articles/rental-listing-scams",
        "whyItMatters": "Asks for payment by wire transfer (Western Union, MoneyGram), gift cards or cryptocurrency. The FTC warns that requests to pay a deposit, fee or rent this way are a common sign of a rental scam, and such payments are hard to get back."
      },
      {
        "signalId": "pay_before_viewing",
        "category": "Upfront money",
        "weight": 25,
        "quote": "send the deposit first",
        "context": "...e house. Keys will be mailed to you once you send the deposit first via Zelle or gift cards. Text me on WhatsApp...",
        "sourceUrl": "https://consumer.ftc.gov/articles/rental-listing-scams",
        "whyItMatters": "Asks for a deposit, first month's rent or a 'holding fee' before you've seen the place or signed a lease. The FTC says not to pay for a property you've never seen."
      },
      {
        "...": "4 more findings: owner_away_keys 'I am currently out of the country', payment_app_deposit 'Zelle', off_platform_contact 'WhatsApp', pressure_urgency 'decide today'"
      }
    ],
    "allMatches": 9,
    "price": 850,
    "bedrooms": 2,
    "city": "example city",
    "marketComparison": null,
    "notes": [
      "Price comparison skipped: fewer than 5 listings with the same city and bedroom count in this run."
    ],
    "checkedAt": "2026-10-30T11:28:43+00:00",
    "disclaimer": "Automated screen for scam warning signs described in public FTC consumer guidance. A..."
  },
  {
    "itemNo": 2,
    "listingId": "EXAMPLE-2",
    "url": null,
    "title": "Example 1BR apartment near the park",
    "scamSignalScore": 0,
    "signalLevel": "no listed signals found",
    "signalCount": 0,
    "categoriesFlagged": [],
    "signals": [],
    "allMatches": 0,
    "price": 1450,
    "bedrooms": 1,
    "city": "example city",
    "marketComparison": null,
    "notes": [
      "Price comparison skipped: fewer than 5 listings with the same city and bedroom count in this run."
    ],
    "checkedAt": "2026-10-30T11:28:43+00:00",
    "disclaimer": "Automated screen for scam warning signs described in public FTC consumer guidance. A..."
  }
]
```

### How much does it cost to check rental listings?

This Actor uses pay-per-event pricing: **$0.003 per listing saved** plus a **$0.00005 start fee per run**, plus small platform usage paid by you (a few hundredths of a cent for small runs). That's about **$0.30 for 100 listings** and **$3 for 1,000 listings** plus usage. With **Only save listings with signals** on, listings with a score of 0 aren't saved or charged. You can set a maximum cost per run in the run options.

### Use it through the API, integrations or AI agents

- Run it and get results in one call: `https://api.apify.com/v2/acts/ultimatemc~rental-listing-scam-checker/run-sync-get-dataset-items`
- Use it from AI agents through the Apify MCP server: `https://mcp.apify.com?tools=ultimatemc/rental-listing-scam-checker`
- Schedule it after a daily Craigslist or Marketplace scrape, send high-score listings to Slack or email with webhooks, or connect it to Make, Zapier, n8n or Google Sheets.
- Chain it after a listing scraper by passing the scraper's dataset ID.

### How it works

Signals are deterministic text patterns and simple statistics based on the FTC's public consumer guidance on rental listing scams, checked on 2026-10-29. No AI and no outside calls are used, so the same input always gives the same result. Each signal type counts once per listing, and the score is the sum of the weights, capped at 100. Levels: **many scam signals** (45+), **some scam signals** (20-44), **few scam signals** (1-19), **no listed signals found** (0). The price median and copy check only use the listings in the same run.

Sources:

- [FTC: Rental listing scams](https://consumer.ftc.gov/articles/rental-listing-scams)
- [FTC consumer alert: Avoiding rental listing scams (July 2024)](https://consumer.ftc.gov/consumer-alerts/2024/07/avoiding-rental-listing-scams)
- [FTC Data Spotlight on rental scams (2025, PDF)](https://search.ftc.gov/system/files/ftc_gov/pdf/rental-scams-spotlight-2025.pdf)

### FAQ

#### Does a high score mean the listing is a scam?

No. It means the text matches patterns the FTC lists as warning signs. Real landlords sometimes use payment apps or are away. Use the score to decide what to check: confirm ownership with county property records, see the place in person and never pay by wire, gift card or crypto.

#### Does a score of 0 mean the listing is safe?

No. Many scam listings copy a real ad word for word and only reveal the payment request later in messages. Paste those messages into **Texts only** to check them too.

#### Is it AI?

No. It's a fixed rule set with weights, so results are repeatable and explainable, and runs are fast and cheap.

#### Why didn't the price check run?

It needs at least 5 listings (or your **Min listings for price comparison** setting) with the same city and bedroom count in one run, each with a price.

#### Does it store or output personal data?

It only reads the listing text you supply. Emails and phone numbers are replaced with \[email] and \[phone] in quotes and titles, and the full description isn't copied to the output.

### Limitations

- Text only: it doesn't check photos (often stolen from real listings), the poster's account age or property records.
- The price check compares listings within one run, not market data, and is skipped for small groups.
- Duplicate detection compares descriptions within the same run only.
- English text only, tuned for US listings. Signals reflect FTC guidance as of 2026-10-29.

### Other tools by Ultimate Foresight

- [Fair Housing Listing Checker for Real Estate Ads](https://apify.com/ultimatemc/fair-housing-listing-checker): flags rental and sale listing wording that may raise Fair Housing Act issues, with HUD sources and rewrite tips (screening aid only).
- [Ad Copy Policy Checker for Meta, Google & TikTok](https://apify.com/ultimatemc/ad-copy-policy-checker): checks ad text against Facebook, Instagram, Google Ads and TikTok ad policies before you submit.
- [H-1B Visa Sponsor Checker & Score for Job Listings](https://apify.com/ultimatemc/h1b-visa-sponsor-score): adds Department of Labor H-1B sponsorship history and a 0-100 score to company names or job listings.
- [Chain vs Independent Labeler for Google Maps Leads](https://apify.com/ultimatemc/chain-vs-independent-labeler): labels local businesses as chain, franchise or independent.
- [YouTube Monetization Checker for Scripts & Titles](https://apify.com/ultimatemc/youtube-script-monetization-checker): pre-checks titles, descriptions and scripts for wording that leads to limited or no ads.
- [Etsy & eBay Listing Policy & Banned Item Checker](https://apify.com/ultimatemc/etsy-ebay-listing-policy-checker): pre-checks marketplace listings for prohibited items, counterfeit wording and off-platform contact.
- [Job Scam Detector & Trust Score for Job Postings](https://apify.com/ultimatemc/job-posting-trust-score): scores job postings 0-100 for scam and ghost-job signals.
- [SAM.gov Amendment & Opportunity Change Tracker](https://apify.com/ultimatemc/sam-gov-opportunity-change-detector): shows what changed between versions of a SAM.gov notice: deadlines, set-asides, NAICS and attachments.
- [Product Recall Checker for Brands, UPCs & Products](https://apify.com/ultimatemc/product-recall-matcher): matches your brands, products, UPCs or model numbers against CPSC, FDA and NHTSA recalls.
- [App Store & Google Play Listing Policy Checker](https://apify.com/ultimatemc/app-store-listing-policy-checker): pre-checks app names, subtitles and descriptions against Apple and Google Play metadata rules.
- [Company Name Normalizer & Deduplicator for CRM](https://apify.com/ultimatemc/company-name-canonicalizer): cleans company names (Inc, LLC, d/b/a, aliases) and groups duplicates in CRM, lead or vendor lists.
- [FCC Covered List & Section 889 Bulk Screener](https://apify.com/ultimatemc/fcc-covered-list-screener): screens FCC IDs and brand names against the public FCC Covered List, with sources and timestamps (screening aid only).
- [Green Claims Checker: EU Greenwashing Ban & FTC](https://apify.com/ultimatemc/green-claims-checker): flags risky eco-friendly, carbon neutral and recyclable wording under EU, FTC and UK CMA rules.
- [Influencer #ad Disclosure Checker: FTC & ASA](https://apify.com/ultimatemc/influencer-ad-disclosure-checker): flags influencer posts with missing or unclear #ad labels under FTC, ASA/CAP and CMA rules.
- [Job Title to SOC Code Mapper with O\*NET Data](https://apify.com/ultimatemc/job-title-soc-code-mapper): maps job titles to SOC and O\*NET-SOC codes in bulk, with seniority and tech skills found in the posting.
- [Shrinkflation Detector for Grocery Price Data](https://apify.com/ultimatemc/shrinkflation-detector): finds smaller packs at the same or higher price by comparing two runs of a grocery scraper, with unit price before and after.
- [Job Ad Discrimination Checker for Job Posts (US)](https://apify.com/ultimatemc/job-ad-discrimination-checker): flags age, sex, national origin, citizenship and other discriminatory wording in job posts, with EEOC and DOJ sources (screening aid only).
- [Amazon Listing Policy Checker for Titles & Bullets](https://apify.com/ultimatemc/amazon-listing-policy-checker): flags pesticide, FDA and disease claims and Amazon title and bullet rule breaks in bulk, with policy links and fixes.
- [Walmart Listing Policy Checker for Titles & Copy](https://apify.com/ultimatemc/walmart-listing-policy-checker): flags promotional phrases, retailer names, URLs, long titles and pesticide or FDA claims in Walmart Marketplace listings, with policy links and fixes.
- [TikTok Shop Listing Policy Checker for Products](https://apify.com/ultimatemc/tiktok-shop-listing-policy-checker): flags off-platform links, dupe wording, weight-loss, disease and FDA claims and title rule breaks in TikTok Shop listings.
- [Supplement & Cosmetic Claims Checker: FDA & FTC](https://apify.com/ultimatemc/supplement-cosmetic-claims-checker): flags disease, drug and 'FDA approved' claims and missing supplement disclaimers in supplement and beauty product copy, with FDA and FTC sources (screening aid only).
- [GTIN, UPC & EAN Barcode Validator (Check Digit)](https://apify.com/ultimatemc/gtin-barcode-validator): checks UPC, EAN, GTIN-14 and ISBN codes for wrong check digits, lost leading zeros, scientific notation, restricted prefixes and duplicates before a feed upload.
- [Fake Review Checker: Incentivized & Duplicates](https://apify.com/ultimatemc/review-integrity-checker): screens scraped reviews for incentivized or insider wording, copied text, rating bursts and rating/text mismatches named in the FTC 2024 fake-review rule.
- [Facebook Marketplace Listing Policy Checker](https://apify.com/ultimatemc/facebook-marketplace-listing-policy-checker): flags Marketplace listings that may break Meta's Commerce Policies (weapons, vapes, Rx, animals, gift cards, services, counterfeits and more), with policy links.
- [Fake Discount Checker: EU 30-Day Prior Price](https://apify.com/ultimatemc/discount-claim-checker): checks 'was' and strikethrough prices against your own price history for 30-day prior-price, raise-then-discount and wrong-badge issues.
- [SMS Marketing Message Checker: STOP & 10DLC](https://apify.com/ultimatemc/sms-marketing-message-checker): pre-checks SMS marketing texts for segment count, STOP opt-out wording, URL shorteners, SHAFT content and quiet hours.
- [Hidden Fee Checker: Hotel, Rental & Ticket Prices](https://apify.com/ultimatemc/hidden-fee-price-checker): flags headline prices that leave out mandatory resort, service or booking fees under the FTC junk fees rule (16 CFR 464), with sources per finding.
- [EU GPSR Listing Checker for Amazon, eBay & Shops](https://apify.com/ultimatemc/gpsr-listing-checker): checks listings for the EU GPSR Article 19 online-sale details: manufacturer, EU responsible person, product identifier, picture and warnings.
- [Food Allergen Label Checker: US, EU & AU](https://apify.com/ultimatemc/food-allergen-label-checker): compares ingredient lists with the 'Contains' statement for US 9, EU/UK 14 and Australian PEAL allergens and flags gaps and conflicting free-from claims.
- [Toy Choking Hazard Warning Checker (CPSC)](https://apify.com/ultimatemc/toy-choking-warning-checker): flags toy listings missing the CPSC choking-hazard warnings for small parts, balloons, small balls and marbles, with age-grade checks.
- [Textile Fiber Label Checker: Bamboo & Origin](https://apify.com/ultimatemc/textile-fiber-label-checker): flags 'bamboo' claims that should say rayon, fiber percentages that don't add up, mismatched silk or cashmere titles and missing Made in USA/Imported.
- [Prop 65 Warning Checker for Product Listings](https://apify.com/ultimatemc/prop65-warning-checker): flags Prop 65 safe-harbor warnings missing 'WARNING', the P65Warnings.ca.gov link or a chemical name, old short forms, and listed chemicals mentioned with no warning.
- [Unit Price Checker for Grocery & Retail Listings](https://apify.com/ultimatemc/unit-price-checker): parses pack sizes, recomputes the price per kg, litre or item, and flags missing or wrong unit prices in grocery and retail data.
- [Made in USA Claim Checker for Product Listings](https://apify.com/ultimatemc/made-in-usa-claim-checker): flags unqualified 'Made in USA' claims next to imported or foreign-origin details under the FTC rule (16 CFR 323), with sources per finding.
- [Subscription Auto-Renewal Disclosure Checker](https://apify.com/ultimatemc/auto-renewal-disclosure-checker): checks subscription and free-trial offer text for missing renewal, price, billing period and cancellation disclosures under California law and FTC ROSCA.
- [Email CAN-SPAM Checker & Unsubscribe Header Test](https://apify.com/ultimatemc/email-can-spam-checker): pre-checks marketing emails for missing unsubscribe links or postal address, misleading subjects and Google/Yahoo one-click unsubscribe headers.

Found a false positive or a missed scam phrase? Open an issue on the **Issues** tab with the listing text (remove personal details), and we'll review the rule.

# Actor input Schema

## `listings` (type: `array`):

Array of objects with "title", "text" (description), and optional "price", "city", "bedrooms", "id" and "url". Price comparison needs at least 5 listings with the same city and bedroom count. The prefilled example shows one listing with several scam signs and one ordinary listing; replace it with your own.

## `texts` (type: `array`):

One listing description or landlord message per entry. No price comparison in this mode.

## `datasetId` (type: `string`):

Apify dataset with rental listings, for example the output of a Craigslist, Facebook Marketplace, Zillow or Apartments.com scraper. Common fields (title, description, price, city, bedrooms, url, id) are detected automatically, including nested ones like listing_price.amount; override them with Field map.

## `fieldMap` (type: `object`):

Override field names; dotted paths work for nested fields. Example: {"text": "postingBody", "price": "listing_price.amount", "city": "location.reverse_geocode.city"}.

## `minGroupSize` (type: `integer`):

A listing's rent is only compared with the median when at least this many listings in the run share its city and bedroom count.

## `onlyFlagged` (type: `boolean`):

Skip listings with a score of 0 (you are only charged for saved rows).

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

Maximum number of listings to check in this run.

## Actor input object example

```json
{
  "listings": [
    {
      "id": "EXAMPLE-1",
      "title": "Example 2BR house, utilities included",
      "text": "I am currently out of the country on a mission trip, so I can't show the house. Keys will be mailed to you once you send the deposit first via Zelle or gift cards. Text me on WhatsApp. Many people are interested so decide today.",
      "price": "$850",
      "city": "Example City",
      "bedrooms": 2
    },
    {
      "id": "EXAMPLE-2",
      "title": "Example 1BR apartment near the park",
      "text": "Second-floor one bedroom with in-unit laundry and parking. Schedule a tour with our leasing office; 12-month lease, apply online. Move-in special: receive a $200 gift card when you sign.",
      "price": "$1,450",
      "city": "Example City",
      "bedrooms": 1
    }
  ],
  "minGroupSize": 5,
  "onlyFlagged": false,
  "maxItems": 1000
}
```

# Actor output Schema

## `results` (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 = {
    "listings": [
        {
            "id": "EXAMPLE-1",
            "title": "Example 2BR house, utilities included",
            "text": "I am currently out of the country on a mission trip, so I can't show the house. Keys will be mailed to you once you send the deposit first via Zelle or gift cards. Text me on WhatsApp. Many people are interested so decide today.",
            "price": "$850",
            "city": "Example City",
            "bedrooms": 2
        },
        {
            "id": "EXAMPLE-2",
            "title": "Example 1BR apartment near the park",
            "text": "Second-floor one bedroom with in-unit laundry and parking. Schedule a tour with our leasing office; 12-month lease, apply online. Move-in special: receive a $200 gift card when you sign.",
            "price": "$1,450",
            "city": "Example City",
            "bedrooms": 1
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ultimatemc/rental-listing-scam-checker").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 = { "listings": [
        {
            "id": "EXAMPLE-1",
            "title": "Example 2BR house, utilities included",
            "text": "I am currently out of the country on a mission trip, so I can't show the house. Keys will be mailed to you once you send the deposit first via Zelle or gift cards. Text me on WhatsApp. Many people are interested so decide today.",
            "price": "$850",
            "city": "Example City",
            "bedrooms": 2,
        },
        {
            "id": "EXAMPLE-2",
            "title": "Example 1BR apartment near the park",
            "text": "Second-floor one bedroom with in-unit laundry and parking. Schedule a tour with our leasing office; 12-month lease, apply online. Move-in special: receive a $200 gift card when you sign.",
            "price": "$1,450",
            "city": "Example City",
            "bedrooms": 1,
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ultimatemc/rental-listing-scam-checker").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 '{
  "listings": [
    {
      "id": "EXAMPLE-1",
      "title": "Example 2BR house, utilities included",
      "text": "I am currently out of the country on a mission trip, so I can'\''t show the house. Keys will be mailed to you once you send the deposit first via Zelle or gift cards. Text me on WhatsApp. Many people are interested so decide today.",
      "price": "$850",
      "city": "Example City",
      "bedrooms": 2
    },
    {
      "id": "EXAMPLE-2",
      "title": "Example 1BR apartment near the park",
      "text": "Second-floor one bedroom with in-unit laundry and parking. Schedule a tour with our leasing office; 12-month lease, apply online. Move-in special: receive a $200 gift card when you sign.",
      "price": "$1,450",
      "city": "Example City",
      "bedrooms": 1
    }
  ]
}' |
apify call ultimatemc/rental-listing-scam-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ultimatemc/rental-listing-scam-checker"
        }
    }
}
```

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/d7JfRHgMc9hstnfJg/builds/5ZdmhnMG2UG9lMHrd/openapi.json
