CaleProcure Solicitations Scraper avatar

CaleProcure Solicitations Scraper

Pricing

Pay per event

Go to Apify Store
CaleProcure Solicitations Scraper

CaleProcure Solicitations Scraper

Search and export current California CaleProcure solicitations with event IDs, agencies, statuses, and bid deadlines.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Monitor current California public bid opportunities from the official CaleProcure California State Contracts Register.

The Actor exports useful solicitation rows with event IDs, titles, issuing departments, statuses, and normalized bid deadlines. It is designed for government-sales teams that need a repeatable feed rather than manual portal checks.

What does the CaleProcure scraper do?

The Actor opens the public CaleProcure event search, reads current posted opportunities, applies your filters, and saves matching records to an Apify dataset.

Use it to:

  • find California solicitations by keyword;
  • monitor one state department or agency;
  • look up a known event ID;
  • focus on a deadline window;
  • schedule recurring opportunity checks;
  • export results as JSON, CSV, Excel, XML, or RSS through Apify.

The Actor does not log in, submit bids, or access private vendor-account data.

Who is this Actor for?

  • Government contractors building a California opportunity pipeline.
  • Business-development teams monitoring target agencies.
  • Bid managers tracking closing dates and event identifiers.
  • Market researchers comparing public purchasing demand across departments.
  • Data engineers feeding public solicitation rows into a CRM, warehouse, or alerting workflow.

Why use this Actor?

CaleProcure is an interactive InFlight/PeopleSoft portal. The results are rendered after browser and session initialization rather than exposed as a simple static page.

This Actor provides:

  • one normalized record per solicitation;
  • case-insensitive keyword, event, and agency filters;
  • normalized YYYY-MM-DD deadline dates;
  • bounded proxy-session rotation when the portal rejects an edge IP;
  • a stable default-dataset contract for Apify integrations;
  • pay-per-result billing rather than a subscription.

What CaleProcure data is extracted?

FieldMeaning
eventIdPublic CaleProcure event or solicitation identifier
eventNamePublic event title
departmentIssuing California department or agency
deadlineDeadline text exactly as displayed by the portal
deadlineDateNormalized date in YYYY-MM-DD, or null when unavailable
deadlineTimeDisplayed time and timezone, or null when unavailable
statusCurrent status displayed in the event search
sourceUrlOfficial source search page
scrapedAtISO 8601 extraction timestamp

Getting started

  1. Open the Actor input page.
  2. Enter a keyword, event ID, department, or deadline window.
  3. Choose the maximum number of matching results.
  4. Keep the default Apify Proxy setting enabled.
  5. Click Start.
  6. Open the Dataset tab when the run finishes.
  7. Export or connect the dataset to your downstream system.

For a broad current feed, leave all text and date filters empty.

Input parameters

InputTypeDefaultDescription
keywordstringemptyMatch text in the event ID or event name
eventIdstringemptyMatch a known event identifier or identifier fragment
departmentstringemptyMatch issuing department or agency text
endDateFromstringemptyKeep deadlines on or after YYYY-MM-DD
endDateTostringemptyKeep deadlines on or before YYYY-MM-DD
maxItemsinteger20Save at most 1–1,000 matching records
proxyConfigurationobjectApify ProxyProxy configuration used for the portal session

All text matching is case-insensitive. Date filters are applied to normalized deadline dates. endDateFrom must not be later than endDateTo.

Input examples

Find software solicitations:

{
"keyword": "software",
"maxItems": 20,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Monitor Caltrans opportunities:

{
"department": "Department of Transportation",
"maxItems": 25,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Build a larger services pipeline:

{
"keyword": "services",
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output example

A real current result has this shape:

{
"eventId": "09A1149",
"eventName": "Trash Collection, Hauling, and Disposal Services in Inyo County.",
"department": "Department of Transportation",
"deadline": "08/13/2026 2:00PM PDT",
"deadlineDate": "2026-08-13",
"deadlineTime": "2:00PM PDT",
"status": "Posted",
"sourceUrl": "https://caleprocure.ca.gov/pages/Events-BS3/event-search.aspx",
"scrapedAt": "2026-08-13T20:24:34.797Z"
}

Source data changes as agencies post and close events. Use event IDs as stable business keys where practical.

How much does it cost to monitor California bid opportunities?

The Actor charges one Run started event of $0.01 per run and one Item extracted event for each saved record. The current BRONZE item price is $0.0524 and higher-volume account tiers are cheaper.

Illustrative BRONZE totals:

Saved recordsBRONZE price calculation
100.01 + 10 × 0.0524 = 0.534 USD
1000.01 + 100 × 0.0524 = 5.250 USD
1,0000.01 + 1,000 × 0.0524 = 52.410 USD

No-result runs pay only the Start event. Actual platform compute and proxy usage are handled by Apify under the active pricing configuration. Always check the live pricing panel for the tier applicable to your account.

Scheduling bid monitoring

Use an Apify schedule to run the same input daily or weekly. A typical monitoring workflow is:

  1. Run the Actor with an agency or keyword filter.
  2. Store eventId values in your CRM or database.
  3. Compare the latest dataset with the previous run.
  4. Alert only on newly observed IDs or changed deadlines.
  5. Route qualified opportunities to a bid owner.

The Actor itself returns the current snapshot; it does not send alerts or maintain change history.

Export and integration workflows

From the dataset you can:

  • download CSV or Excel for bid review;
  • send rows to Google Sheets;
  • trigger a webhook when a run completes;
  • load JSON into Snowflake, BigQuery, or a relational database;
  • connect through Make or Zapier;
  • use event IDs to deduplicate scheduled snapshots;
  • join department names with an internal account-owner list.

Run with the Apify API using cURL

Replace YOUR_TOKEN with an Apify API token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~cal-eprocure-solicitations-contracts/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keyword": "software",
"maxItems": 20,
"proxyConfiguration": {"useApifyProxy": true}
}'

The response includes the run ID and default dataset ID.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor(
'automation-lab/cal-eprocure-solicitations-contracts',
).call({
department: 'Department of Transportation',
maxItems: 25,
proxyConfiguration: { useApifyProxy: true },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor(
"automation-lab/cal-eprocure-solicitations-contracts"
).call(run_input={
"keyword": "services",
"maxItems": 50,
"proxyConfiguration": {"useApifyProxy": True},
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Use through Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/cal-eprocure-solicitations-contracts"

Claude Desktop, Cursor, and VS Code MCP setup

Claude Desktop, Cursor, and VS Code can use this HTTP MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/cal-eprocure-solicitations-contracts"
}
}
}

Example prompts:

  • “Find current California software solicitations and summarize their deadlines.”
  • “Export 25 current Department of Transportation opportunities.”
  • “Create a table of California service bids grouped by issuing agency.”

Reliability and proxy behavior

CaleProcure can reject individual network edge sessions with HTTP 403. The Actor uses a coherent browser, cookies, user agent, and proxy identity for each attempt. It retires a rejected identity and retries with a bounded new session.

The default datacenter proxy path was verified. A residential fallback is not enabled because it did not improve access and would add unmeasured cost. Do not disable the proxy unless you have independently verified that your execution network reaches the portal.

Limits

  • The Actor currently extracts posted rows shown by the public event search.
  • It does not claim complete historical or award coverage.
  • It does not open attachments or submit responses.
  • It does not extract private vendor-account fields.
  • Filters operate on the fields available in the current results table.
  • Department spelling follows the source and may contain abbreviations.
  • CaleProcure can change its InFlight/PeopleSoft markup without notice.
  • Naturally empty filters return a successful run with zero saved items.
  • Portal outages and repeated session rejection cause a failed run rather than a misleading empty dataset.

Tips for useful results

  • Start with a short keyword such as software, security, or services.
  • Use the exact visible department name for a narrow agency feed.
  • Keep maxItems small while testing a new workflow.
  • Use both deadline inputs for a bounded bid-planning window.
  • Deduplicate recurring snapshots by eventId.
  • Preserve deadline when the exact displayed timezone matters.
  • Use deadlineDate for sorting and warehouse filters.

Legality and responsible use

This Actor accesses public procurement information without logging in. You are responsible for complying with applicable laws, portal terms, procurement rules, and your organization's data policies.

Do not use the data to overload the source, misrepresent eligibility, automate prohibited bid actions, or infer sensitive information. Verify deadlines and requirements on the official solicitation before making a business decision. This Actor is not affiliated with the State of California, FI$Cal, DGS, or CaleProcure.

Troubleshooting

Why did my run return zero records?

Your filters may not match the current posted snapshot. Remove filters, reduce the keyword to a shorter phrase, or verify the department spelling. A genuine no-match run logs the number of source rows inspected.

Why did the run fail with a CaleProcure access error?

The portal may have rejected several edge sessions or may be temporarily unavailable. Keep the default proxy enabled and retry later with the same input. The Actor fails explicitly after bounded retries instead of returning false empty output.

Why is a deadline field null?

deadlineDate or deadlineTime is null only when the source text cannot be normalized safely. The original deadline value remains available for inspection.

Can I scrape more than 1,000 records?

The current input cap is 1,000 matching rows per run. The live posted register is usually smaller. Use scheduled snapshots rather than aggressive repeated runs.

FAQ

Does this Actor require a CaleProcure login?

No. It uses the public California State Contracts Register event search.

Can it monitor one agency?

Yes. Set department to a distinctive full or partial agency name.

Can it find one event?

Yes. Set eventId to the full ID or a distinctive ID fragment.

Does it include closed contracts and awards?

Not as a guaranteed product scope. The current implementation targets posted opportunities visible in the public search.

Does it download bid documents?

No. Attachments and bid-response actions are outside this Actor's scope.

Can I schedule it?

Yes. Apify schedules can run any saved input at your chosen interval.

How fresh is the data?

Each run reads the portal's current rendered listing at run time. The Actor does not control when agencies update CaleProcure.

For a broader government-procurement workflow, combine this Actor with:

Keep source-specific event IDs separate when combining datasets.