Вы можете выполнить поиск по URL, но лучшим подходом будет использование хештега :
just entered #supercoolcontest for http://foo.com/contest
Вы можете искать случаи #supercoolcontest, которые содержат требуемый URL-адрес конкурса или любые другие ключевые слова, которые вы можете захотеть. Это позволит пользователям не быть точными в тексте при ретвитировании, а также даст людям возможность рассказать о конкурсе в общем виде, который можно отслеживать.
Вы можете получить все твиты с помощью хэштега, используя API поиска :
http://search.twitter.com/search.json?q=%23supercoolcontest
Вероятно, это наиболее эффективный подход, поскольку вы гарантированно извлекаете только те твиты, которые вам интересны, вместо n твитов от n пользователей, из которых только малая часть имеет какое-либо отношение к вам.
Каждый раз, когда вы чистите этот канал API (каждые n минут), вставляйте новых уникальных пользователей. Я бы использовал базу данных - не сложно и не занимало много времени, чтобы выдержать что-то за столом или двумя. Проще сделать запрос позже.
Чтобы ответить на ваш последний вопрос, вам нужно сделать отдельный вызов API, чтобы определить, следует ли данный пользователь другому пользователю.