Search ACTEC's Find a Lawyer directory using location, last name, practice area, language, or other directory criteria, and return unique matching lawyer profile links with visible profile-card text.
Use Cases
Use for any ACTEC lawyer-directory search where the caller provides a city, state, last name, practice area, language, or other directory criterion. Run separate direct searches for multiple independent criteria, such as estate-and-trust and matrimonial-related practice areas, then merge results by profile_url.
Automation Flow
- Construct a direct results URL instead of visiting the homepage or filling the form:
https://www.actec.org/find-a-lawyer/fellow-search-results/?address_city={URL-encoded-city}&address_state={URL-encoded-state}&last_name={URL-encoded-last-name}&practice_areas={URL-encoded-practice-area}&languages={URL-encoded-language}#/resultsOmit any parameter that was not requested. The hash may be omitted if the site loads the same results page without it. - For each requested independent criterion, navigate directly to its URL, wait for the client-rendered result cards to finish loading, and run the extractor below. For example, use separate URLs with
practice_areas=Transfer%20Planningandpractice_areas=Pre%20%2F%20Post%20Marital%20Agreementswhen those are the requested directory criteria. Combine all outputs by absoluteprofile_url. - If the loaded result page visibly provides a
SHOW ALLcontrol and the caller needs the complete result set, activate that control, wait for additional cards to render, and then run the extractor. Otherwise extract immediately; do not use exploratory scrolling or homepage form interactions. - Run this self-contained extractor on each loaded results page:
(() => {
const seen = new Set();
return [...document.querySelectorAll('a[href*="/find-a-lawyer/profile"]')]
.map(a => {
const profile_url = new URL(a.getAttribute('href'), location.href).href;
if (seen.has(profile_url)) return null;
seen.add(profile_url);
const card = a.closest('article, li, [class*="result"], [class*="profile"], .directory-item') || a.parentElement;
return {
name: a.textContent.trim(),
profile_url,
text: (card || a).innerText.trim()
};
})
.filter(Boolean);
})()Possible Friction Points
- ACTEC's directory is client-rendered, but the results page accepts direct query parameters and commonly uses the
#/resultshash route; direct URLs avoid homepage navigation and form interaction. - URL-encode city, state, last name, practice-area, and language values, especially
Pre / Post Marital Agreements. - Known practice-area parameter values include
Transfer PlanningandPre / Post Marital Agreements; use the exact directory label supplied by the caller for other criteria. - An optional last-name filter is passed as
last_name={URL-encoded-last-name}. - An optional language filter can be added as
&languages={URL-encoded-language}, for examplelanguages=Hindi. - Results load asynchronously after navigation. Wait for profile links/cards, not merely
domcontentloaded. - A profile can appear through multiple links in one card; deduplicate by absolute
profile_url. - If direct query results do not load in a particular session, fall back to
https://www.actec.org/find-a-lawyer/#/, set the generated city field#directory-field-wWscwZJw6uN4BELmidEZK, resolve the state option by visible label rather than guessing its value, apply criteria by their visible labels, and submit withform button[type="submit"]orbutton.directory-search-submit.