@pipeworx/estatesales-net
Connect: https://gateway.pipeworx.io/estatesales-net/mcp · Install: one-click buttons
Tools: 3
Upcoming estate sales, moving sales and estate auctions near a US ZIP code, from EstateSales.NET — the largest US estate-sale listing site — plus the companies that run them.
Tools
estatesales_search(postal_code)— the upcoming sales nearest a ZIP: sale ID, type, city/state/ZIP, coordinates, distance, schedule, start/end dates.estatesales_sale(sale_id)— one sale in full: name, description, terms, every scheduled date, coordinates, picture count, and the company running it with phone and page. Street address only once the site has released it (see below).estatesales_companies(postal_code)— estate-sale businesses working that ZIP: name, business address, phone, coordinates, listing tier.
Auth
Keyless. No account, no token, no registration.
The official EstateSales.NET API is a different thing, and it is not usable here
EstateSales.NET does publish a documented beta REST API
(https://github.com/vintage-software/EstateSales.NET-Api), and the obvious
reading is that this pack should use it. It should not. That API is
seller-side only — every endpoint is scoped to your own OrgId:
GET /api/public-sales/org/{OrgId} your org's sales
GET /api/public-sales/{saleId} 403 without your org's token
POST /api/public-sales/ create a sale
PUT /api/public-sales/{saleId} edit a sale
POST /api/public-sales/{saleId}/publish
POST /api/sale-dates/ · /api/sale-pictures/
It is how an estate-sale company lists its own sales. There is no search
endpoint in it at all, its keys are issued from an estate-sale company account
(/account/company/api-keys), and a key would only ever return our own empty
org. It cannot answer a buyer’s question, so no PLATFORM_ESTATESALES_KEY
exists and none would help.
What this pack reads instead is the site’s own public buyer-facing data — the structured JSON the website itself renders from, no credentials involved.
Addresses are embargoed by the publisher, and this pack honors that
An estate sale is usually held at a private home, so EstateSales.NET withholds
the street address until shortly before the sale (showAddress,
utcShowAddressAfter, showAddressType). estatesales_sale returns the
address only when the site has already published it; otherwise it returns
address_published: false, the release time in address_visible_after_utc,
and a note. Coordinates and city/ZIP are always present, since the site
publishes those from the start.
Do not route around this. The embargo is the publisher’s decision about someone’s home, not a technical quirk.
No prices
EstateSales.NET lists upcoming sales. It publishes no hammer prices and no
realized-sale data, so nothing here is a comp. Every response says so in a
price_data field.
Data sources
https://www.estatesales.net/{ST}/{City}/{ZIP}— city sale listing.https://www.estatesales.net/{ST}/{City}/{ZIP}/{saleId}— sale detail.https://www.estatesales.net/companies/{ST}/{City}/{ZIP}— company listing.
Things worth not rediscovering:
- The pages carry their data as JSON, not markup. Each embeds a
scripttag withid="estatesales-net-state"andtype="application/json", holding{"NGRX_STATE": …}— Angular transfer state. Sales are atfeature.cityViewState.filteredSales, a sale atfeature.traditionalSaleViewState.entitiesById[saleId], companies atfeature.companiesCityViewState.companies. Anchor on the script tag’sid: matchingtype="application/json"alone also hits the analytics blocks. - The site canonicalises its own location URLs, which is why every tool
here needs only a ZIP or a sale ID.
/XX/x/64111redirects to/MO/Kansas-City/64111, and/XX/x/00000/{saleId}redirects to the sale’s real path. Never hand-build the city slug. - A city page lists 20 sales regardless of how many exist;
filteredSaleCountandtotalSaleCountreport the real depth (e.g. 64111: 20 listed, 61 filtered, 97 total). There is no page parameter — the site loads the rest client-side. Report the counts rather than implying 20 is all. - Dates arrive wrapped as
{"_type":"DateTime","_value":"…"}; this pack unwraps them to ISO strings. GET /api/sales/{id}is public and keyless, but returns only bookkeeping (org id, type, timestamps) — no address, dates, description or pictures. The page state has all of those, which is why the pack uses it.GET /api/public-sales/{id}(the official API’s path) is 403 without a seller token./api/sales?postalCodeNumber=…answers HTTP 400 “Permissions denied on filter” — the filter is not public. That error means the endpoint exists, not that the site is down.
Tools
- estatesales_search — Upcoming estate sales, moving sales and estate auctions near a US ZIP code, from EstateSales.NET — the largest US estate-sale listing site. Returns each sale’s ID, city/state/ZIP, coordinates, distanc
- estatesales_sale — One EstateSales.NET sale in full, by sale ID: name, description, terms, sale type, every scheduled date/time, coordinates, picture count, and the company or seller running it with their phone and page
- estatesales_companies — Estate-sale companies operating near a US ZIP code, as listed on EstateSales.NET: company name, business address, phone, coordinates and their EstateSales.NET page. Answers “who runs estate sales in t
Tools
-
estatesales_companies— Estate-sale companies operating near a US ZIP code, as listed on EstateSales.NET: company name, business address, phone, coordinates and their EstateSales.NET page. Answers who runs estate sales in th -
estatesales_sale— One EstateSales.NET sale in full, by sale ID: name, description, terms, sale type, every scheduled date/time, coordinates, picture count, and the company or seller running it with their phone and page -
estatesales_search— Upcoming estate sales, moving sales and estate auctions near a US ZIP code, from EstateSales.NET — the largest US estate-sale listing site. Returns each sale's ID, city/state/ZIP, coordinates, distanc