91³Ô¹ÏÍø

Watch CBS News

North Texas woman arrested in widening prostitution, racketeering investigation, authorities say

A North Texas woman accused of taking part in a years‑long prostitution scheme and an effort to gather intelligence on local public officials has been arrested, authorities said.

Ashley Ketcherside, 41, of Godley, was taken into custody Tuesday and charged with racketeering. No bond has been set.

The District Attorney's Office for Johnson & Somervell Counties said the investigation centers on ongoing criminal activity involving Ashley Ketcherside, her husband, Michael, 52, and former members of the Godley Police Department.

Michael Ketcherside had previously been arrested on charges of continuous promotion and solicitation of prostitution.

ashleygodley.png
Ashley Ketcherside, 41   Johnson County Jail

Alleged decade‑long operation

According to authorities, the couple allegedly ran a prostitution and racketeering operation that investigators describe as a pattern spanning nearly 10 years. The activity allegedly included promoting and facilitating prostitution.

"This is an active and ongoing investigation, and additional arrests are anticipated," District Attorney Timothy M. Good said last week.

A search warrant was executed on March 31 at the Ketchersides' residence, where authorities seized electronic communications and storage devices believed to contain evidence of criminal activity, according to the release.

The devices contained evidence of a prostitution conspiracy involving the Ketchersides and numerous "clients" or "Johns," and evidence showing the Ketchersides coordinated with then‑Godley Police Chief Matthew Cantrell and other officers, according to the release.

Former police chief implicated

michaelcantrell.png
Matthew Cantrell Johnson County Jail

Cantrell, who was also arrested last week on a charge of promotion of prostitution and is out of jail on bond, recently told CBS News Texas he had no comment.

He and former Officer Solomon Omotoya were indicted in late 2025 after the City of Godley found discrepancies in its fleet fuel card purchases. The Valley Mills City Council also fired Cantrell as its police chief in early 2025 after a council member flagged suspicious police‑department credit‑card charges.

Omotoya was arrested on March 31 for continuous promotion and solicitation of prostitution.

Court records outline allegations

According to court records obtained by CBS News Texas: 

  • Cantrell was arrested Tuesday on a charge of promotion of prostitution amid a widening investigation. 
  • Michael and Ashley Ketcherside allegedly ran a years‑long prostitution and racketeering operation, with Ashley Ketcherside coordinating clients and communicating regularly with Cantrell and Omotoya. 
  • Omotoya admitted soliciting Ashley Ketcherside for sex in exchange for yard work or babysitting and said both he and Cantrell were aware of the Ketchersides' operation.
  • Cantrell pulled criminal histories on city officials and on people involved in disputes with Ashley Ketcherside, while maintaining close ties with the Ketchersides. 
  • Cantrell admitted to subscribing to Ashley Ketcherside's OnlyFans account.
  • Cantrell acknowledged longstanding knowledge of the Ketchersides' prostitution enterprise and said Ashley Ketcherside charged about $1,000 per hour. 

Alleged targets included local officials  

michael-ketcherside.jpg
Michael Ketcherside Johnson County Jail

According to the District Attorney's Office, the group's alleged purpose was to compile information on local public officials and private citizens they viewed as opponents or enemies.

The "adversaries" included members of the Godley City Council, Godley ISD School Board, the former mayor, and the former Godley police chief.

CBS News Texas will provide updates as more information becomes available.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });