Have you considered search type powers, such as spirits have?
A betrayal by someone close to the runners is another alternative.
Also, sometimes it can be wise to just throw in the towel and let the runner's plans go through smoothly. I know this can seem counterintuitive, as it often makes boring milk runs, but you can really erode player trust if you often defeat their best laid plans. Many players like to feel clever and see their plans work. And you can always retool and try again next adventure.
The best suggestion in this thread probaly has been to make use of randoms if you feel they are getting off too easy and the adventure is boring due to their success at hiding the ganger. Travelling at night is no small danger in SR, with police checkpoints and huge go gangs dominating the streets. If they travel in the Redmond or Puyallup barrens they are harder to find, but they run the risk of various dangers. If say they went way out to the Hell's Kitchen lavaflows, they may run into free fire elementals or the like, or paracritters. Daytime travelling brings heavy traffic in certain areas.
Another option might be to make the runners paranoid by making them think they were spotted when they were actually not. Their reactions might lead to some drama.
Maybe the run succeeds, but then the players get a call from the ganger in another city? They've found him there and he needs to hire the runners again. He's now trapped in say Chicago's Shattergraves with limited resources and the bad guys closing in. The runners must fly out fast and locate him. Now it's the runners who have to find the guy or find the gangers hunting him.
Also, maybe the run succeeds, but they find a whole new run while doing so. Maybe out in the far reaches of Puyallup they run into some Humanis goons using orcs as forced labor. Are the players the type to intervene? Maybe they randomly run into someone who needs to hire them. Maybye if they accept the job, the second job complicates the first.