# New Mexico RLD Contractor License Scraper (CID) (`scrapers_lat/new-mexico-rld-contractors-scraper`) Actor

Export New Mexico RLD Construction Industries Division licensees: name, license #, classification, street address, city, ZIP, phone, status, issue/expiry dates, volume limit & qualifying party. JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/new-mexico-rld-contractors-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 licensee records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## New Mexico RLD Contractor License Scraper (CID)

Export licensed **New Mexico** construction contractors and other Construction Industries Division (CID) licensees from the New Mexico Regulation & Licensing Department (RLD) — as clean **JSON, CSV or Excel** for lead generation, compliance/KYB, and market research.

Search a whole city and pull every licensee, or look up specific businesses, people, or license numbers. Each record can be enriched with the licensee's **phone number, monetary volume limit, issue date, and the qualifying party's certificate & classification code**.

### What you get per licensee

| Field | Description |
|---|---|
| `name` | Business or individual licensee name |
| `licenseNumber` | New Mexico CID license / certificate number |
| `licenseType` | Category searched (Contractor, LP-Gas, MHD-\*) |
| `classification` | Qualifying-party classification code (e.g. `GB98`, `MM01`) |
| `addressStreet` | Principal place of business street address |
| `city`, `state`, `zip` | Location |
| `phone` | Business phone number |
| `licenseStatus` | Active, Expired, Cancelled, … |
| `issueDate`, `expiryDate` | License issue & expiry dates |
| `monetaryLimit` | Monetary volume / bid limit |
| `qualifyingPartyName` | Qualifying party (QP) name |
| `qualifyingPartyCertificate` | Qualifying party certificate number |

### Search & filter options

- **Search mode** — companies (contractors, LP-gas, manufactured-housing businesses) or individuals.
- **License type** — Contractor, LP-Gas, MHD-Broker/Crossover/Dealer/Installer/Manufacturer/Salesperson.
- **Cities** — one search per city (e.g. Albuquerque, Santa Fe, Las Cruces, Rio Rancho).
- **Business / last names** — partial matches.
- **License / certificate numbers** — direct lookups.
- **Status filter** — keep only e.g. `Active`.
- **Classification filter** — keep only e.g. `GB98`.
- **Max licensees** — cap the run size.

### Billing

Pay-per-result. Each returned licensee is charged once (`result`). When **full details** are enabled (default on), a small `details` add-on is charged per record for the phone, volume limit, issue date and qualifying-party data. Turn details off to pay for the listing-only fields.

> Free Apify plans are capped at 10 licensees per run — upgrade your plan for larger exports.

### Tips

- Search by **city** for the widest coverage; combine with the **classification** or **status** filters to target a niche (e.g. `GB98` general building contractors that are `Active`).
- Results are deduplicated by license number.
- Data comes from the official public New Mexico RLD / CID license verification system and reflects what is publicly posted there.

# Actor input Schema

## `searchMode` (type: `string`):

Search companies (contractors, LP-gas & manufactured-housing businesses) or individuals (certificate holders / qualifying parties).

## `licenseType` (type: `string`):

Which New Mexico CID license category to search in company mode.

## `cities` (type: `array`):

New Mexico cities to pull, e.g. "Albuquerque", "Santa Fe", "Las Cruces", "Rio Rancho". One search runs per city. Leave empty to search by name or license number instead.

## `businessNames` (type: `array`):

Business-name terms to search (or last names in individual mode). Partial matches work. One search runs per term.

## `firstName` (type: `string`):

Optional first name, used only in individual search mode.

## `licenseNumbers` (type: `array`):

Look up specific license or certificate numbers (one search each). Overrides city/name filters.

## `statuses` (type: `array`):

Optional. Keep only these license statuses, e.g. "Active", "Expired", "Inactive" (matches on contains).

## `classifications` (type: `array`):

Optional. Keep only records whose classification code matches, e.g. "GB98", "GB2", "GA", "MM98" (matches on contains). Requires full details ON.

## `withDetails` (type: `boolean`):

When ON (default), each licensee is enriched from its detail page with phone number, monetary volume limit, issue date, and the qualifying party's name, certificate number and classification code. Turn OFF to pay for the listing-only fields (name, license #, address, city, ZIP, status, expiry).

## `maxContractors` (type: `integer`):

Maximum number of licensees to return this run.

## `maxCaptchaAttempts` (type: `integer`):

Advanced. How many times to retry the search verification step per query before giving up.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy. Not required — the source is reachable directly. Enable US residential only if you hit rate limits.

## Actor input object example

```json
{
  "searchMode": "company",
  "licenseType": "Contractor",
  "cities": [
    "ALBUQUERQUE"
  ],
  "withDetails": true,
  "maxContractors": 50,
  "maxCaptchaAttempts": 12,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "cities": [
        "ALBUQUERQUE"
    ],
    "maxContractors": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/new-mexico-rld-contractors-scraper").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 = {
    "cities": ["ALBUQUERQUE"],
    "maxContractors": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/new-mexico-rld-contractors-scraper").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 '{
  "cities": [
    "ALBUQUERQUE"
  ],
  "maxContractors": 50
}' |
apify call scrapers_lat/new-mexico-rld-contractors-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/new-mexico-rld-contractors-scraper"
        }
    }
}

```

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/5ePjOdyXZblqBwkvR/builds/5qNSnpOzAe6NSaPFH/openapi.json
