clawdbot-workspace/reonomy-url-research-findings.md

168 lines
4.9 KiB
Markdown

# Reonomy URL Research - Findings
## Date
2026-01-15
---
## Confirmed URL Patterns
### Search URL (with filters)
```
https://app.reonomy.com/#!/search/{search-id}
```
**Example from user:**
`https://app.reonomy.com/#!/search/504a2d13-d88f-4213-9ac6-a7c8bc7c20c6`
This URL points to a search with **pre-applied filters** (phone + email).
---
### Property Ownership URLs
```
https://app.reonomy.com/#!/search/{search-id}/property/{property-id}/ownership
```
**Examples from user:**
- `https://app.reonomy.com/#!/search/504a2d13-d88f-4213-9ac6-a7c8bc7c20c6/property/2b370b6a-7461-5b2c-83be-a59b84788125/ownership`
- `https://app.reonomy.com/#!/search/504a2d13-d88f-4213-9ac6-a7c8bc7c20c6/property/eac231fb-2e3c-4fe9-8231-fb2e3cafe9c9/ownership`
- `https://app.reonomy.com/#!/search/504a2d13-d88f-4213-9ac6-a7c8bc7c20c6/property/b6222331-c1e5-4e4c-a223-31c1e59e4c0b/ownership`
- `https://app.reonomy.com/#!/search/504a2d13-d88f-4213-9ac6-a7c8bc7c20c6/property/988d9810-6cf5-5fda-9af3-7715de381fb2/ownership`
**Key Insight**: The search ID (`504a2d13-d88f-4213-9ac6-a7c8bc7c20c6`) encodes the filters.
---
## Page Structure
### Search Results Page
- Left panel: Map view
- Right panel: Scrollable list of property cards
- Each property card: Contains link to property details
### Property Ownership Page
The user noted we need to collect from **BOTH** tabs:
1. **Builder and Lot Tab** — Property details (SF, type, etc.)
2. **Owner Tab** — Contact info (phones, emails)
User provided phone selector:
```css
p.MuiTypography-root.jss1797.jss1798.MuiTypography-body2
```
This appears to be the class used for phone numbers on the **Owner** tab.
---
## Key Findings
| Aspect | Finding |
|--------|----------|
| **Direct URL construction works** | ✅ Yes - URL contains search ID with encoded filters |
| **Search ID encodes filters** | ✅ `504a2d13-d88f-4213-9ac6-a7c8bc7c20c6` = phone + email filters |
| **Ownership URL pattern confirmed** | ✅ `/search/{id}/property/{id}/ownership` |
| **OAuth redirect works** | ✅ After login, redirects to desired ownership page |
| **No URL parameters needed** | ✅ Just use search ID from filtered search |
| **Need to capture search ID once** | ✅ Search with filters → capture search ID → reuse for all properties |
---
## How to Generate Filtered Search URL
### Current Understanding
We DON'T need to construct URL with query parameters. Instead:
1. **Perform search once with filters applied in UI**
- Log in to Reonomy
- Navigate to Advanced Search
- Check "Has Phone" filter
- Check "Has Email" filter
- Enter location
- Click search
- **Copy the resulting search ID from URL**
2. **Reuse search ID for subsequent scrapes**
- Construct ownership URLs using that search ID
- No need to repeat search in UI
### Example Workflow
```bash
# Step 1: Manual search (one-time)
# User: Apply filters + search location
# Capture: https://app.reonomy.com/#!/search/504a2d13-d88f-4213-9ac6-a7c8bc7c20c6
# Extract: search ID = 504a2d13-d88f-4213-9ac6-a7c8bc7c20c6
# Step 2: Scrape properties using captured search ID
# Scraper: Navigate to ownership pages directly
# URL pattern: https://app.reonomy.com/#!/search/{search-id}/property/{id}/ownership
```
---
## Scraper Data Extraction Requirements
Per user instructions: "collect all of the info under 'Builder and Lot' as well as 'owner'"
### Builder and Lot Tab
- Property address
- City, State, ZIP
- Square footage
- Property type
- Year built (if available)
### Owner Tab
- Owner names
- Phone numbers (using: `p.MuiTypography-root.jss1797.jss1798.MuiTypography-body2`)
- Email addresses
- Owner location
---
## Next Steps for Scraper
1. **Add input for pre-configured search ID**
```bash
SEARCH_ID="504a2d13-d88f-4213-9ac6-a7c8bc7c20c6" node scraper.js
```
2. **Or add manual search capture flow**
- Log in via browser
- Apply filters
- Search
- Extract search ID from URL
- Save to config file
3. **Implement dual-tab extraction**
- Extract from Builder and Lot tab
- Navigate to Owner tab (or use /ownership URL)
- Extract contact info using provided selector
4. **Test with agent-browser**
- Use new tool instead of Puppeteer
- Leverage refs, semantic locators, state save/load
---
## Status
| Component | Status |
|-----------|--------|
| **URL pattern decoded** | ✅ Complete |
| **Filter encoding** | ✅ Search ID encodes phone+email |
| **OAuth flow** | ✅ Working |
| **Property access** | ✅ Direct ownership URLs work |
| **Selectors** | ✅ User provided CSS class for phones |
| **Next step** | ⏳ Wait for user confirmation to build scraper |
---
## Notes
- Direct URL construction via query strings is NOT needed
- Search ID from a filtered search can be reused infinitely
- No API access required — just capture search ID from UI once
- User wants to use agent-browser instead of Puppeteer
- Need to extract data from BOTH tabs (Builder and Lot + Owner)