Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the LoopNet API page →
Real Estate

LoopNet API & Scraper

The LoopNet API returns the largest US commercial property marketplace as clean JSON in four actions.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search takes a location, which can be a market such as Austin, TX, a LoopNet submarket such as CBD - Austin, TX, a county, a state, a ZIP code, a street address, or the word usa for a nationwide sweep, and returns 25 listings a page on one of three sides of the market: for_lease, for_sale or auction. Every row carries the listing id, the LoopNet URL, the property name and type, the city, state and ZIP, the size band, the asking figure with its shape and rate term, the marketing description, the broker and brokerage, the photos and the listing's exposure tier. property_detail opens one listing by id or URL and adds the property subtype, building class, building and lot size, floors, year built and year renovated, zoning, parking, amenities, the full street address, latitude and longitude, up to 40 photos, every available space with its own suite, size, term, use and rate, the brokers with their firms, and the last_updated stamp. listings prices up to 30 saved ids in one call and names any id the source did not return in missing rather than dropping it. location_search turns a typed place into the geography LoopNet's own search takes, with the id, the type and whether an area search can be scoped to it, and it costs nothing. The search parameter list runs to 28 entries and fifteen filter blocks were each measured against a same-run unfiltered control in Austin, TX: property type on both sides, asking rent, space available, sublease, sale price, cap rate, unit count, lot size, year built, net leased, building size, keywords, auction and sort. Filters that LoopNet accepts and then ignores are not offered at all, and the filters that exist differ between the lease and the sale side. The asking figure is modelled as a shape rather than coerced into a number: over 669 measured live rows, 343 published a single figure, 99 published a range and 227, which is 34 percent, published no asking figure at all. No LoopNet account, one ReefAPI key, and the standard { ok, data, meta, error } envelope.

Reference

What the LoopNet price field actually means

A US commercial asking figure is often not a number. It can be a band, a rate per square foot per year, a flat annual amount, or nothing at all. Every price comes back with a shape and a rate_term so two listings quoting 30 are never compared by accident. Counts below are from 669 live search rows read on 2026-09-25.

shapeWhat LoopNet showsWhat it meansWhat comes back
single$2,750,000, or $30.00 SF/YRone published figurevalue_min equals value_max, and rate_term says which term it is. 343 of 669 rows
range$21.50 - $27.00 SF/YRthe listing quotes a bandboth ends kept, in value_min and value_max. 99 of 669 rows
nonenothing at all on the cardthe listing publishes no asking figure on this surfacedisplay is null and every number is null, never a zero. 227 of 669 rows, 34 percent
on_requestUpon Requestthe figure sits behind an enquirythe wording is kept in display and no number is invented
multipleseveral units priced separately under one idnot seen in the measured sample, carried as a guardflagged, with no single number invented

rate_term is one of per_sf_per_year, per_sf_per_month, amount_per_year, amount_per_month, per_acre_per_year, or total for a sale price. On the detail record each available space carries its own rate, because LoopNet renders four rate displays for the same suite at once and flattening them produces one nonsense figure.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/loopnet/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "location": "Austin, TX",
    "transaction": "for_lease",
    "property_type": [
      "office"
    ],
    "limit": 25
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "loopnet",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3755.5,
    "record_count": 25,
    "bytes": 975846,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "limit_reached",
    "pages_read": 1,
    "total_results": 504,
    "charged_credits": 2,
    "version": "1.0.0"
  },
  "data": {
    "results": [
      {
        "listing_id": "21695896",
        "property_id": "591275",
        "url": "https://www.loopnet.com/Listing/3301-3305-Northland-Dr-Austin-TX/21695896/",
        "name": "Balcones Office Park",
        "address": "3301-3305 Northland Dr",
        "headline": "10,334 SF Office Available",
        "subheadline": "Austin, TX 78731",
        "city": "Austin",
        "state": "TX",
        "postal_code": "78731",
        "county": null,
        "country": "US",
        "property_type": "Office",
        "space_use": "Office",
        "listing_type_label": "Office for Lease",
        "transaction": "for_lease",
        "exposure_level": "Tier1",
        "year_built": 1973,
        "size": {
          "display": "986 - 10,334 SF",
          "min": 986,
          "max": 10334,
          "unit": "SF"
        },
        "price": {
          "display": "$30.00 SF/YR",
          "shape": "single",
          "value_min": 30,
          "value_max": 30,
          "currency": "USD",
          "rate_term": "per_sf_per_year"
        },
        "description": "Find unparalleled visibility and connectivity with well-appointed office / medical spaces and most OpEx covered in base rent, steps from a wealth of amenities.",
        "brokerages": [
          "Moritz Properties"
        ],
        "images": [
          "https://images1.loopnet.com/i2/nJ5OQZ3z5NhIMsMiekuN1SVz7VyqgsokrfaZCrc9HVw/117/office-property-for-lease-3301-3305-northland-dr-austin-tx-78731.jpg",
          "https://images1.loopnet.com/i2/rYn_9vW7POHZXpa9XbrarO9v2qxuqg07VUhO5GxLxnk/117/image.jpg",
          "https://images1.loopnet.com/i2/lfpyZzRr7y5_v_lIGh0JcancMYZyuYvxHBxgGLfcW6A/117/image.jpg"
        ],
        "broker": "Jan Smitherman",
        "brokerage": "Moritz Properties"
      },
      {
        "listing_id": "36561247",
        "property_id": "591192",
        "url": "https://www.loopnet.com/Listing/9430-Research-Blvd-Austin-TX/36561247/",
        "name": "Echelon I & II",
        "address": "9430 Research Blvd",
        "headline": "35,609 SF Office Available",
        "subheadline": "Austin, TX 78759",
        "city": "Austin",
        "state": "TX",
        "postal_code": "78759",
        "county": null,
        "country": "US",
        "property_type": "Office",
        "space_use": "Office",
        "listing_type_label": "Office for Lease",
        "transaction": "for_lease",
        "exposure_level": "Tier1",
        "year_built": 1983,
        "size": {
          "display": "1,694 - 35,609 SF",
          "min": 1694,
          "max": 35609,
          "unit": "SF"
        },
        "price": {
          "display": "$21.50 - $27.00 SF/YR",
          "shape": "range",
          "value_min": 21.5,
          "value_max": 27,
          "currency": "USD",
          "rate_term": "per_sf_per_year"
        },
        "description": "Explore the efficient suites at this newly renovated office complex just steps away from The Arboretum's premier amenities with direct TX 183 and MoPac access.",
        "brokerages": [
          "Gold Eagle Investments"
        ],
        "images": [
          "https://images1.loopnet.com/i2/rqqqUL4x2L_ms1euUO_W6FYriR1EJuER9seIfqtjjhE/117/office-property-for-lease-9430-research-blvd-austin-tx-78759.jpg",
          "https://images1.loopnet.com/i2/W2Nq0ZhkSdkvZb9zYBEDjhH5ilUo8cDCvBj6jcEyNEM/117/image.jpg",
          "https://images1.loopnet.com/i2/b9NXrbW7ChEQyBmdVm1M7Tmzohckmf4PPL31CgbArt0/117/image.jpg"
        ],
        "broker": "John Jobes",
        "brokerage": "Gold Eagle Investments"
      },
      {
        "listing_id": "26739806",
        "property_id": "595421",
        "url": "https://www.loopnet.com/Listing/5555-N-Lamar-Blvd-Austin-TX/26739806/",
        "name": "Lamar Business Park",
        "address": "5555 N Lamar Blvd",
        "headline": "14,390 SF Available",
        "subheadline": "Austin, TX 78751",
        "city": "Austin",
        "state": "TX",
        "postal_code": "78751",
        "county": null,
        "country": "US",
        "property_type": "Office, Flex",
        "space_use": "Office, Flex",
        "listing_type_label": "Office, Flex for Lease",
        "transaction": "for_lease",
        "exposure_level": "Tier1",
        "year_built": 1973,
        "size": {
          "display": "704 - 14,390 SF",
          "min": 704,
          "max": 14390,
          "unit": "SF"
        },
        "price": {
          "display": null,
          "shape": "none",
          "value_min": null,
          "value_max": null,
          "currency": "USD",
          "rate_term": null
        },
        "description": "Suites with individual entrances and various office-to-warehouse ratios in a range of sizes, 10 minutes north of downtown, near US 183, I-35, and Hwy 290.",
        "brokerages": [],
        "images": [
          "https://images1.loopnet.com/i2/kil5LzCnASPbkdTqgUTUoN9KwHIz19YfRiOxwrV1IdI/117/office-flex-property-for-lease-5555-n-lamar-blvd-austin-tx-78751.jpg",
          "https://images1.loopnet.com/i2/i_cG6UN2M3OCGcdHy81Y9227HJBUlFK3duGKypB2xzo/117/image.jpg",
          "https://images1.loopnet.com/i2/6_J0s2AM77EAmiF714bR6Npy6wW-aKacN7kzPWo6k30/117/image.jpg"
        ],
        "broker": "Jake Frickenschmidt",
        "brokerage": "CBRE"
      }
    ],
    "total_results": 504,
    "total_is_capped": false,
    "all_listing_ids": [
      "21695896",
      "36561247",
      "26739806"
    ],
    "page": 1,
    "limit": 25,
    "transaction": "for_lease",
    "sort": "default",
    "location": {
      "location_id": "6062",
      "display": "Austin, TX",
      "display_long": "Austin, TX - USA",
      "type": "city",
      "type_id": 2,
      "city": "Austin",
      "state": "TX",
      "county": null,
      "country": "US",
      "postal_code": null,
      "latitude": 30.2939345,
      "longitude": -97.806575,
      "bounding_box": {
        "south": 30.068439,
        "west": -98.0855561,
        "north": 30.51943,
        "east": -97.5275939
      },
      "searchable": true
    },
    "filters_applied": {
      "transaction": "for_lease",
      "property_type": [
        "office"
      ]
    },
    "filters_rejected": []
  }
}
Actions

What the LoopNet API does

ActionDescriptionConcrete use caseKey params
searchCommercial listings in a market. Give a `location` ('Austin, TX', '78704', 'Downtown Austin') or a `location_id` from the `location_search` action, and pick a `transaction` (for_lease, for_sale or auction). Every filter offered here was proven to narrow the result set against an unfiltered control; the ones LoopNet accepts and ignores are deliberately not offered. `total_results` is the source's own count and saturates at 750 — `total_is_capped` tells you when it did.Real-estate investors call search to get commercial listings in a market.location, location_id, transaction, property_type, page, ...
property_detailOne listing by id or URL: the asking figure with its SHAPE, property type and subtype, building and lot size, year built and renovated, units, cap rate, NOI where published, zoning, address and coordinates, photos, the marketing description, every available space with its own size, term and rate, and the brokers with their firms. `detail_level` says whether the deep record came back ('full') or only the listing-card record ('placard') — see the API notes.Brokerage tools call property_detail to get one listing by id or URL.listing_id
listingsUp to 30 listing ids in ONE upstream call. Each row carries the address, city, state, ZIP, property type, the asking figure with its shape and the lead photo — the compact record, not the deep one. Use it to price or re-check a saved set of ids; use `property_detail` when you need the facts table, the spaces or the coordinates.Property dashboards call listings to get up to 30 listing ids in ONE upstream call.listing_ids
location_searchTurn a typed place into the geography LoopNet's search takes: the id, the type (state, city, postal_code, submarket, county, country — or property/address/building for a single site), the coordinates and the bounding box. `searchable` says whether a search can be scoped to that row: only the area types carry a bounding box. Pass a row's `location_id` back to `search` alongside the same `location` text to pick that match instead of the top one.Lead-generation teams call location_search to turn a typed place into the geography LoopNet's search takes.query, limit
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/loopnet/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"location":"Austin, TX","transaction":"for_lease","property_type":["office"],"limit":25}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.loopnet.search with {"location":"Austin, TX","transaction":"for_lease","property_type":["office"],"limit":25}.
Use cases

Who uses this API and why

  • Build a daily pipeline of on-market offices, retail or industrial in a target metro and diff it on listing_id.
  • Benchmark asking rent per square foot by submarket and property type, using rate_term so per-year and per-month quotes never mix.
  • Screen for-sale inventory by cap rate, unit count, lot size or year built, then pull the full record for the survivors.
  • Track nationwide auction inventory, which Austin-level searches will not show you.
  • Enrich a CRE CRM of addresses with the live listing, its size, its asking figure, its available spaces and its brokerage.
  • Re-price a saved watchlist of up to 30 listing ids in one call and catch the ones that have been retired.
FAQ

Questions developers ask before integrating

How do I tell LoopNet where to search?

Pass location as text. It accepts a US market such as Austin, TX, a LoopNet submarket such as CBD - Austin, TX, a county such as Travis County, TX, a state such as Texas, a ZIP code such as 78704, a street address, or the word usa for a nationwide search. It is resolved through LoopNet's own geography service, which knows its own submarket names rather than every local nickname, so run location_search first if you are unsure what a phrase matches. That action is free and returns the id, the type, the coordinates and the bounding box of each match. When a place name has several matches, pass the winning row's location_id alongside the same location text: the text is still required and the id only decides which match wins.

What is the difference between for_lease, for_sale and auction?

They are three different sides of the LoopNet market and they do not carry the same filters. Rent, space available and sublease exist only on the lease side. Price, cap rate, unit count, lot size and year built exist only on the sale side. The property type trees also differ: office, industrial, retail, flex, medical, restaurant, lab, land and coworking for lease, and office, industrial, retail, shopping-center, multifamily, specialty, health-care, hospitality, sports-entertainment, land, residential-income, restaurant and lab for sale. A property type that does not exist on the chosen side is rejected rather than quietly ignored, and filters_applied echoes what was actually sent.

Does the API return cap rate and NOI?

Not today, and it is worth being exact about this because cap rate is the field commercial buyers ask for first. cap_rate, noi, units and price_per_sf are in the property_detail schema and the parser reads the labels LoopNet's own pages use for them, but no sampled live document has published those rows yet, so they come back null rather than filled with a guess. What does work is the filtering. min_cap_rate, max_cap_rate, min_units and max_units are proven to narrow against a same-run control: an Austin for-sale search of 548 listings drops to 5 at a cap rate of 8 percent or higher, to 1 at 4 percent or lower, and to 27 at 20 units or more. So LoopNet plainly holds these values and will screen on them, and you can build an investment screen today. Do not build a spreadsheet column that expects a cap-rate number back on every detail record.

Why does a listing come back with no price?

Because the listing did not publish one. Over 669 live rows, 227 of them, 34 percent, carried no asking figure at all on the search surface, and on the measured Austin lease page 14 of 25 rows published no rent. That is an absence at the source, not a parse failure, so it comes back as shape none with every number null. It also has a practical consequence: a listing with no published rent cannot match min_rent or max_rent, so a rent filter quietly excludes the third of the market that stays silent about price.

How many LoopNet listings can one search return?

25 a page, and LoopNet's own total saturates at 750. A market such as Los Angeles, New York or Houston reports exactly 750 on both sides, which means 750 or more, and total_is_capped says when the number hit that ceiling. Paging stops in the same place: page 31 renders nothing, so 30 pages of 25 is the hard end. limit fetches up to 100 rows in a single call, which is four upstream pages. You rarely need to walk them, because all_listing_ids hands back every id in the result set, up to 750, on the first call. Narrow by submarket, property type or price band to reach inventory beyond the cap.

Do I get the broker's phone number?

No. Each listing returns the broker's name, their brokerage, their city and state and their public LoopNet profile link, which are business facts published on the logged-out page. The direct phone number and e-mail sit behind a contact form that this API never touches. Some lower-tier listings publish no broker at all, and those come back as an empty brokers array with brokerage null rather than with a neighbouring listing's agent copied in.

Can I get sold comps or sale history?

No, and not because of a gap here. LoopNet does not publish sold prices or comparable-sale history on its open pages at all. Sale history is a CoStar subscription product. What is available is the live on-market side: for lease, for sale and at auction. Auctions are a real result set, not a stub. A nationwide auction search returned 171 listings, while Austin alone returned zero, which comes back as a clean not-found with the count rather than as an empty success.

Why is the street address missing on some rows?

Because LoopNet prints it on only about half of the search cards. Measured over 669 live rows, the street address was present on 358 of them, 54 percent, and year_built on 313, 47 percent, and both vary by market and by the listing's exposure tier. The same rows carry everything else, so this is a source absence returned as null, not a parse gap. property_detail carries the full address for every listing whose document opens, together with the coordinates. Coordinates are themselves absent from some documents and are returned as null rather than interpolated from the address.

What is the LoopNet API?

LoopNet API is a ReefAPI endpoint group for us commercial property for lease, for sale and at auction: offices, retail, industrial, land, multifamily and shopping centres. It returns live JSON through POST requests under /loopnet/v1.

Is the LoopNet API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. LoopNet calls use the same shared credit balance as every other ReefAPI engine.

Do I need a LoopNet login or account?

No login to LoopNet is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the LoopNet data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the LoopNet API use?

LoopNet actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call LoopNet from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call loopnet actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / loopnet

LoopNet

US commercial property for lease, for sale and at auction: offices, retail, industrial, land, multifamily and shopping centres.

base /loopnet/v14 endpoints
post/loopnet/v1/property_detail2 credits

One listing by id or URL: the asking figure with its SHAPE, property type and subtype, building and lot size, year built and renovated, units, cap rate, NOI where published, zoning, address and coordinates, photos, the marketing description, every available space with its own size, term and rate, and the brokers with their firms. `detail_level` says whether the deep record came back ('full') or only the listing-card record ('placard') — see the API notes.

ParameterAllowed / rangeDescription
listing_idrequired—The LoopNet listing id (the number at the end of the listing URL) or the full listing URL.
Try in playground →
post/loopnet/v1/listings1 credit

Up to 30 listing ids in ONE upstream call. Each row carries the address, city, state, ZIP, property type, the asking figure with its shape and the lead photo — the compact record, not the deep one. Use it to price or re-check a saved set of ids; use `property_detail` when you need the facts table, the spaces or the coordinates.

ParameterAllowed / rangeDescription
listing_idsrequired—Listing ids or listing URLs, up to 30. Ids the source does not return are listed in `missing` rather than silently dropped.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.

Comparing scraping APIs?ReefAPI vs Bright Data