New York eAccessNY Real Estate License Scraper
Pricing
Pay per event
New York eAccessNY Real Estate License Scraper
Search public NY eAccessNY real estate licenses by person or organization; export license status, expiry, address, and related parties.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Share
Export public New York Department of State eAccessNY real estate license lookup results as structured Apify datasets.
What does this New York eAccessNY scraper do?
The Actor submits name searches to the public eAccessNY license lookup, follows result pagination, and saves one normalized dataset item per returned license record. It supports:
- individual licensee searches by first and last name;
- organization searches for brokerages, principal offices, branch offices, schools, and other registered entities;
- optional detail-page enrichment for addresses and related parties;
- multiple searches in one run;
- dataset export as JSON, CSV, Excel, XML, or RSS.
This is a name-search tool. The public source does not provide a single “download every New York license” operation.
Who is this New York real estate license scraper for?
- Compliance teams verifying public license status before onboarding.
- Brokerages checking agents, offices, and related registrations.
- Proptech teams enriching broker and office records.
- Lead operations teams adding public license identifiers to CRM records.
- Data teams building repeatable eAccessNY monitoring workflows.
Always confirm decisions that carry legal or compliance consequences against the current official record.
Why use this eAccessNY extractor?
The eAccessNY website is designed for manual lookups. Repeating those searches and copying results by hand is slow and error-prone. This Actor maintains the required form session, paginates matching records, optionally opens detail pages, and produces consistent fields ready for filtering or integration.
Use maxResults and maxPages to bound broad searches. Start with a small run to verify that your name is specific enough before scaling.
How to search individual New York licensees
Select individual, then provide at least two characters for both firstName and lastName.
{"searchMode": "individual","firstName": "John","lastName": "Smith","maxResults": 10,"maxPages": 2,"includeDetails": true}
Name searches can return multiple people. Use licenseNumber, licenseType, and the official detail page to distinguish records rather than assuming the first match is the intended person.
How to search New York real estate organizations
Select organization and provide at least four characters in organizationName.
{"searchMode": "organization","organizationName": "Real","maxResults": 20,"maxPages": 4,"includeDetails": true}
Generic words can return many matches. A distinctive brokerage, school, or office name usually produces a more focused dataset.
Batch search configuration
Use searches to execute several lookups in one run. When this array is present, it overrides the top-level single-search fields.
{"searches": [{"searchMode": "individual","firstName": "John","lastName": "Smith"},{"searchMode": "organization","organizationName": "Example Realty"}],"maxResults": 100,"maxPages": 5,"includeDetails": false}
maxResults applies across the complete run, while maxPages applies to each search.
Input configuration
| Field | Type | Purpose |
|---|---|---|
searchMode | string | individual or organization for a single search. |
firstName | string | Individual first name; the source requires at least 2 characters. |
lastName | string | Individual last name; the source requires at least 2 characters. |
organizationName | string | Organization name; the source requires at least 4 characters. |
searches | array | Optional batch of individual and organization searches. |
maxResults | integer | Maximum records saved across all searches, from 1 to 10,000. |
maxPages | integer | Maximum result pages visited per search, from 1 to 200. |
pageSize | integer | Number of records requested from eAccessNY per result page. |
includeDetails | boolean | Open detail pages for address and related-party enrichment. |
Disabling includeDetails reduces requests and runtime when list-page fields are sufficient.
What data can you extract?
Each dataset item can contain:
searchModeandsearchName— the query that produced the record;name— licensee or organization name;licenseNumber— public New York license identifier;licenseType— source-provided license or registration type;status— status displayed by eAccessNY;expiryDate— source-formatted expiry date;address— address from the detail page when requested and available;relatedParties— related names shown on the detail page;detailUrlandsourceUrl— traceable official source links;scrapedAt— UTC extraction timestamp.
Values are preserved as displayed by the source. Optional fields may be absent or null when eAccessNY does not provide them.
Output example
{"searchMode": "organization","searchName": "Example Realty","name": "EXAMPLE REALTY LLC","licenseNumber": "10990000000","licenseType": "Principal Office:Princ Off","status": "Current","expiryDate": "01/15/2027","address": "100 Example Avenue, Albany, NY 12207","relatedParties": ["SAMPLE BROKER"],"detailUrl": "https://appext20.dos.ny.gov/nydos/details.do?anchor=example","sourceUrl": "https://appext20.dos.ny.gov/nydos/searchByName.do","scrapedAt": "2026-07-29T12:00:00.000Z"}
The example illustrates the schema; it is not a claim about a real license.
How much does it cost to scrape New York real estate license records?
The Actor uses pay-per-event pricing:
- one
startevent is charged when a run starts; - one
itemevent is charged for each dataset record extracted.
The exact price visible in Apify Console depends on your Apify plan. Set maxResults to control the maximum number of item events. Detail enrichment changes runtime but does not introduce a separate charge event.
Tips for better New York license searches
- Use the complete known first and last name for individual verification.
- Start organization searches with distinctive words rather than suffixes such as “LLC”.
- Keep
includeDetailsenabled when you need address or relationship context. - Disable details for faster list-only discovery, then rerun selected names with details.
- Retain
detailUrl,sourceUrl, andscrapedAtwhen auditability matters. - Schedule recurring runs and compare by
licenseNumberto detect source changes.
Data quality and source limitations
Results reflect what eAccessNY returned at run time. Similar names may identify different people or entities, and source fields can be blank. The Actor does not infer whether a license is suitable for a particular transaction.
A successful empty dataset can mean that no records matched the submitted name. If a normally productive query unexpectedly returns nothing, retry later because the government service can be temporarily unavailable.
Integrations
Use Apify integrations or webhooks to send records to:
- Google Sheets for review queues;
- Airtable for compliance operations;
- BigQuery or another warehouse for historical analysis;
- a CRM enrichment workflow;
- Zapier or Make for notifications and downstream automation.
Every run stores its output in the default Apify dataset, which can also be downloaded directly in common formats.
API usage
The Actor ID is automation-lab/new-york-eaccessny-real-estate-license-scraper. Keep your Apify token in an environment variable or secret store rather than source code.
Node.js API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/new-york-eaccessny-real-estate-license-scraper',).call({searchMode: 'organization',organizationName: 'Example Realty',maxResults: 100,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/new-york-eaccessny-real-estate-license-scraper').call(run_input={'searchMode': 'individual','firstName': 'John','lastName': 'Smith','maxResults': 10,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL API example
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~new-york-eaccessny-real-estate-license-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"searchMode": "organization","organizationName": "Example Realty","maxResults": 20}'
Use the returned run's defaultDatasetId to fetch dataset items after the run succeeds.
MCP setup for Claude Code and Claude Desktop
Apify MCP lets compatible AI clients run the Actor and reason over its dataset.
Claude Code
$claude mcp add --transport http apify https://mcp.apify.com/?tools=automation-lab/new-york-eaccessny-real-estate-license-scraper
Claude Desktop
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/new-york-eaccessny-real-estate-license-scraper"}}}
Cursor and VS Code
Add the same mcpServers.apify.url value to the MCP configuration in Cursor or VS Code.
Example prompts:
- “Run the New York eAccessNY scraper for organization name Example Realty and summarize current license types.”
- “Look up John Smith and return license number, status, expiry, and detail URL.”
- “Compare this dataset with the previous run and flag changed statuses.”
Troubleshooting
No records are returned
Confirm that individual names have at least two characters per field and organization names have at least four. Try a known exact spelling, then retry later if the public service appears unavailable.
Too many organization matches
Use a more distinctive organization name, lower maxResults, or inspect an initial small dataset before increasing limits.
Address or related parties are empty
Set includeDetails to true. Some official detail pages still omit these values, so absence is not necessarily an extraction error.
A run reaches its limit before all matches
Increase maxResults and, if necessary, maxPages. These safeguards intentionally stop broad searches from running without bounds.
Legality and responsible use
This Actor extracts publicly available government license information. Use it for lawful compliance, research, and business workflows. Respect Apify terms, applicable privacy rules, and source-site availability. Do not treat automated output as legal advice or use it to make prohibited discriminatory decisions.
Related scrapers
Explore other Automation Lab public-license and government-data Actors on the Automation Lab Store profile.
FAQ
Can it download every New York real estate license at once?
No. eAccessNY is a name-search interface, so each lookup needs an individual or organization name.
Does it require an eAccessNY login?
No. It uses the public license lookup.
Does it use a browser?
No. It uses efficient HTTP requests while maintaining the source form session.
Can I mix individuals and organizations in one run?
Yes. Put both kinds of query in searches; the batch overrides top-level single-search fields.
How do I identify records between runs?
Use licenseNumber as the primary source identifier and retain the query and source URLs for context.