hyreflow docshyreflow docsDocumentation
Integrations

Openmart

Local-business search, company enrichment, owners and people lookup, business email lookup, and technology detection. BYOK-only on Hyreflow.

Use Openmart when the target market is made up of local businesses or SMBs: search a category in a location, choose store- or brand-level records, qualify the businesses, then find their owners or other decision-makers.

Openmart is BYOK-only. Connect your own Openmart key in Integrations. Openmart methods cost 0 Hyreflow credits and run on your Openmart account; the status and result reads for async jobs are free. Connecting your own key needs the Essential plan or above.

Capabilities

ToolDoes
search_businessesSearch store-level local-business records by category, location and business attributes
search_business_idsRun the lightweight search path for IDs, place IDs, relevance scores and cursors
search_brandsSearch one deduplicated company/brand row instead of one row per physical location
enrich_companyResolve a website or social-media URL to matching business records
credit_balanceRead the connected Openmart account's remaining credits and current billing period
find_peopleStart an async search for owners, decision-makers or other role-holders at known domains
lookup_peopleStart an async contact lookup for people you already know by name and optional LinkedIn URL
lookup_business_emailStart an async lookup for shared mailboxes such as info@, support@ or sales@
find_techStart an async technology check for known domains
get_batch_statusRead processing, completed and errored counts until batch_ready is true
get_batch_task_idsList task IDs in a ready batch, optionally filtered to COMPLETED
get_task_resultRetrieve one task's final result and its tracking_id

Country coverage

Openmart lists 16 markets: United States, Canada, Australia, New Zealand, Puerto Rico, United Kingdom, Ireland, France, Spain, Germany, Austria, Belgium, Netherlands, Denmark, Luxembourg and Sweden. Expect little or no data elsewhere. A search in India returned nothing in testing, with no error.

  • Use search_businesses when every location matters, such as a city-level territory or a list of individual practices. Continue through pages with the last returned row's cursor.
  • Use search_brands when multi-location businesses should count once. It is the better shape for company outreach, market sizing and account lists.
  • Use search_business_ids when you want a fast first pass and do not need full business fields yet.
  • Use enrich_company when you already have a website or social profile. Supply at least one of website or social_media_link; add a location when the identity is ambiguous.
hyreflow tools execute openmart search_businesses \
  --payload '{"query":"accounting firms","location":[{"country":"US","state":"CA","city":"San Francisco","zip_code":["94103"]}],"has_valid_website":true,"limit":25}'

Location fields

The location fields are not named the same way on every method. In testing, search_businesses ignored a misspelled field (zipcode) without an error and searched the whole state instead, so a typo can return too many results rather than fail.

Fieldsearch_businesses, search_business_idsenrich_companysearch_brands
Postal codezip_code, a string or a listzip_code, a listzipcode, a list (no underscore)
Countrycountry, defaults to UScountry, defaults to UScountry, required on every location
Radiuslat, long and geo_radius in meterslat, long and geo_radius in metersgeo_radius as {"lat", "lon", "radius"} in meters
Ownershipownership_type, no published value listnot availableownership_type, a list of INDEPENDENT, FAMILY, FRANCHISE, CHAIN

Search results return the postal code as content.zipcode, even though the filter is zip_code. To check a new filter cheaply, run it with a limit of 1 to 3 and confirm the rows are in the area you asked for.

Async batch lifecycle

find_people, lookup_people, lookup_business_email and find_tech accept an array of task objects and start background work. The result is a four-step flow:

  1. Launch the method and keep its batch_id.
  2. Poll get_batch_status(batch_id) until batch_ready is true.
  3. Call get_batch_task_ids(batch_id, status="COMPLETED") to receive task IDs.
  4. Call get_task_result(task_id) for each ID and join the result to its source row with tracking_id.

batch_ready means processing has stopped; it does not mean every task found data. Inspect the completed and errored counts, then read each task result. In testing, a lookup_people task that matched no one still completed, with data: null. Starting a batch can take 30 seconds or more.

MethodEach task needsOptional
find_peopledomain, title, max_k (1 to 8)company_name, country, state, city, info_access, include_phone_grade, version, tracking_id, notify_url
lookup_peopledomain, people (1 to 8, each with first_name and last_name, optional linkedin_url)company_name, country, state, city, info_access, include_phone_grade, tracking_id, notify_url
lookup_business_emaildomain, company_namecountry, state, city, tracking_id, notify_url
find_techdomain, tech_type (for example shopify, hubspot, klaviyo)company_name, tracking_id

domain is the bare root domain, with no https://. info_access is a list of EMAIL and PHONE in capitals and defaults to both; lowercase email is rejected. Openmart does not publish a full list of tech_type values.

hyreflow tools execute openmart find_people \
  --payload '{"tasks":[{"domain":"acme.example.com","company_name":"acme","title":"Owner","max_k":3,"info_access":["EMAIL"],"tracking_id":"acme-001"}]}'

Openmart email results are for BD/company outreach. lookup_business_email returns shared company inboxes. find_people and lookup_people return current-employer work contacts when available. For candidate acquisition, use the personal_email waterfall and LinkedIn instead.

Local-business workflow

Search stores or brands → keep and deduplicate root domains → qualify against the ICP → optionally detect technology → find the owner or relevant decision-maker → retrieve and verify work contact details → sequence or push to the CRM.

Put the source business ID in each task's tracking_id. Openmart echoes it on the task result, which makes joining async contacts back to the correct business deterministic.